【发布时间】:2016-11-20 13:32:23
【问题描述】:
我正在尝试解析从服务器响应中读取的 JSON。我能够获取第一级,但之后我可以遍历到下一个级别。由于我对 IOS 完全陌生,所以我尽可能多地探索和尝试,但一切都在脉络中。我怀疑缺少基本级别的东西。
let json = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as! NSDictionary
打印(json)
{
"ab_report" = "[{\"label\":\"ART\",\"value\":187},{\"label\":\"SINDED\",\"value\":24},{\"label\":\"RES\",\"value\":1},{\"label\":\"REAL\",\"value\":1}]";
distslist = (
{
"_id" = {
"$id" = 5732d884dbe782a63c760e3b;
};
"dt_code" = ADB;
"dt_name" = Adilaasbad;
"st_name" = 572d95c0dsdfbe7823348c981b3;
},
{
"_id" = {
"$id" = 572d95d4dbsadfe7826b48c981b3;
};
"dt_code" = HEEWYD;
"dt_name" = aassas;
"st_name" = 572d95c0efghbe7823348dc981b3;
}
)
"last_ssdate" = "Lase on : 2s0";
message = "";
"ressdfort" = "[{\"label\":\"Ded\",\"value\":71},{\"label\":\"Weed\",\"value\":0},{\"label\":\"Scrnitiated\",\"value\":0}]";
"scrort" = "[{\"label\":\"Physicals\",\"value\":8551},{\"label\":\"General\",\"value\":15752},{\"label\":\"Ees\",\"value\":2756}]";
}
打印(json[“ressdfort”]!)
[{"label":"Ded","value":71},{"label":"Weed","value":0},{"label":"Stiated","value":0}]
在此之后,我想用“标签”和“值”从每个对象中一一获取值。
提前致谢。
【问题讨论】:
-
json["ressdfort"]! 返回一个
Array类型为Dictionary'[Dictionary]` 的元素。谷歌如何处理这些类型。如果用 Swift 做东西,你可能想要阅读:developer.apple.com/library/content/documentation/Swift/… -
@shallowThought 感谢您的建议,我浏览了该链接并获得了一些基本想法。当我打印
print(type(of:json))时,它是__NSDictionaryI,type(of:json["ressdfort"]!)它是__NSCFString和type(of:json["ressdfort"]!)它是Optional<Any。我试图通过let sng = json["ressdfort"] as! NSArray获得数组,但我得到'无法转换__NSCFString' (0x10e819320) to 'NSArray' (0x10e819c58).类型的值,你能建议我如何进一步处理。谢谢! -
两个想法:在 Swift 中更喜欢
Dictionary([String:Any] 或类似的东西)而不是NSDictionary。此外,您的 JSON 将 JSON 字符串作为 JSON 嵌入其中,因此对于ressdfort、script和ab_report值,您必须再次调用JSONSerialization。
标签: ios json swift swift3 xcode8