首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift 4 Json编解码

Swift 4 Json编解码
EN

Stack Overflow用户
提问于 2017-11-04 11:49:50
回答 1查看 1.5K关注 0票数 0

这是我的代码来完成Json;

代码语言:javascript
复制
var str = "Hello"
var dictionary = ["key1":"val1", "key2":"val2", "key3":"val3"]

var products = [Product]()

struct Product: Codable {
    var title: String
    var reference: String
}

func createProducts(title: String, refer: String) {
    products.append(Product(title: title, reference: refer))
}

for element in dictionary {
    createProducts(title: element.key, refer: element.value)
}

var general = [str: products]

let encodedData = try? JSONEncoder().encode(general)
let json = String(data: encodedData!, encoding: .utf8)!
print(json)

我的Json的意见如下;

代码语言:javascript
复制
{"Hello":[{"title":"key2","reference":"val2"},{"title":"key3","reference":"val3"},{"title":"key1","reference":"val1"}]}

在对Json进行解码后,我只需要得到这个部分;

代码语言:javascript
复制
[{"title":"key2","reference":"val2"},{"title":"key3","reference":"val3"},{"title":"key1","reference":"val1"}]

我有问题的解码器下面,得到价值的“你好”;

代码语言:javascript
复制
if let decodedData = try! JSONDecoder().decode(general.self, from: json.data(using: .utf8)!) {
    print(decodedData)
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-04 12:03:22

编码的JSON的实际类型是[String:[Product]],因此对其进行解码,并获得Hello的值

代码语言:javascript
复制
do {
    let decodedData = try JSONDecoder().decode([String:[Product]].self, from: Data(json.utf8))
    print(decodedData["Hello"]!)
} catch {
    print(error)
}

另外,创建一个伞式Root结构

代码语言:javascript
复制
struct Root : Decodable {
    private enum CodingKeys : String, CodingKey { case hello = "Hello" }
    let hello : [Product]
}

并解码

代码语言:javascript
复制
do {
   let decodedData = try JSONDecoder().decode(Root.self, from: Data(json.utf8))
   print(decodedData.hello)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47110399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档