Swift -将嵌套JSON转换为字典



如何获得所有级别嵌套json数据的字典?

JSON数据:

{"places":[
{"name":"東京","date":"2005/03/02","transport":"新幹線"},
{"name":"北海道","date":"2006/04/06","transport":"飛行機"}
],
"no_of_person":"4",
"package_name":"日本最高"
} 

我代码:

let response: String = "{"places":[{"name":"東京","date":"2005/03/02","transport":"新幹線"},{"name":"北海道","date":"2006/04/06","transport":"飛行機"}],"no_of_person":"4","package_name":"日本最高"}"

let jsonObj = response.data(using: .utf8)!
do {
let items = try JSONSerialization.jsonObject(with: jsonObj, options: []) as! Dictionary<String, Any>
print(items)    
} catch {
print(error)
}

终端输出:

["package_name": 日本最高, "places": <__NSArrayI 0x280fde800>(
{
date = "2005/03/02";
name = "U6771U4eac";
transport = "U65b0U5e79U7dda";
},
{
date = "2006/04/06";
name = "U5317U6d77U9053";
transport = "U98dbU884cU6a5f";
}
)
, "no_of_person": 4]

如上面终端输出所示,

  1. 如何获得"位置"?作为字典而不是数组?
  2. 还有,我怎样才能保持日文文本原样,就像在"package_name" ?

编辑:更正:我怎么得到"地方"?作为字典的数组?

我认为这将帮助你如果你想使用jsondecoder。

struct SampleData: Codable {
let places: [Place]
let no_of_person: String
let package_name: String
}
struct Place: Codable {
let name: String
let date: String
let transport: String
}
do {
var dataDecoded = try JSONDecoder().decode(SampleData.self, from: data)
} catch {
print("uppsss there is something wrong in decoding: (error)")
}