Arrays Swift 4 Json编码和解码

Arrays Swift 4 Json编码和解码,arrays,json,swift4,jsonparser,Arrays,Json,Swift4,Jsonparser,下面是我获取完整Json的代码 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: Strin

下面是我获取完整Json的代码

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)
我的口述如下:

{"Hello":[{"title":"key2","reference":"val2"},{"title":"key3","reference":"val3"},{"title":"key1","reference":"val1"}]}
在解码Json之后,我只需要得到这一部分

[{"title":"key2","reference":"val2"},{"title":"key3","reference":"val3"},{"title":"key1","reference":"val1"}]
我对下面的解码器有问题,为了得到“Hello”的值


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

do {
    let decodedData = try JSONDecoder().decode([String:[Product]].self, from: Data(json.utf8))
    print(decodedData["Hello"]!)
} catch {
    print(error)
}
或者创建一个伞形
Root
struct

struct Root : Decodable {
    private enum CodingKeys : String, CodingKey { case hello = "Hello" }
    let hello : [Product]
}
并对其进行解码

do {
   let decodedData = try JSONDecoder().decode(Root.self, from: Data(json.utf8))
   print(decodedData.hello)

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

do {
    let decodedData = try JSONDecoder().decode([String:[Product]].self, from: Data(json.utf8))
    print(decodedData["Hello"]!)
} catch {
    print(error)
}
或者创建一个伞形
Root
struct

struct Root : Decodable {
    private enum CodingKeys : String, CodingKey { case hello = "Hello" }
    let hello : [Product]
}
并对其进行解码

do {
   let decodedData = try JSONDecoder().decode(Root.self, from: Data(json.utf8))
   print(decodedData.hello)