【发布时间】:2014-02-03 00:45:40
【问题描述】:
如何在 Objective C 中解析这个 JSON?我一直用jsonmodel.com的代码来解析。
{
"found":10958,
"start":3141,
"hits":[
{
"pid":"76493",
"title":"Beton Armu00e9",
"artist":"Raiden",
"genre":"Dubstep",
"image":"A76493_BetonArm_BetonArm.jpg",
"label":"Offkey",
"year":"2011",
"price":9.99,
"release":"Beton Armu00e9",
"type":"Album",
"tracks":{
"0":{
"name":"Barbican",
"file":"A76481_Barbican.mp3",
"tracknum":1,
"pid":"76481"
},
"1":{
"name":"Trinity",
"file":"A76482_Trinity.mp3",
"tracknum":2,
"pid":"76482"
},
"2":{
"name":"Tricorn",
"file":"A76483_Tricorn.mp3",
"tracknum":3,
"pid":"76483"
},
"3":{
"name":"Brutalist",
"file":"A76484_Brutalist.mp3",
"tracknum":4,
"pid":"76484"
},
"4":{
"name":"Trellick",
"file":"A76485_Trellick.mp3",
"tracknum":5,
"pid":"76485"
}
}
}
]
}
JSONModel 需要一个指针字符串来声明键,但这里的键是数字。这是我需要的,但不起作用:
#import "JSONModel.h"
#import "songParentModel.h"
@protocol albumModel @end
@interface albumModel : JSONModel
@property (strong,nonatomic) NSString *title;
@property (strong,nonatomic) NSString *image;
@property (strong,nonatomic) NSString *artist;
@property (strong,nonatomic) songParentModel *0; // THIS DOESN'T WORK (of course)
@end
我只需要获得第一首曲目,但如果知道如何获得所有曲目,那就太好了。
我对解决方案的最佳猜测是停止使用 JSONModel 并使用其他一些简化的方法解析 JSON。
【问题讨论】:
-
嗯,首先这不是 JSON。即使解析成字典和数组,也会有一个前导(并且非常重要)
{或(。 -
所以你一定猜到你已经放弃了最外面的
{并且有一本字典字典。外层字典只有一个元素“tracks”,即字典,它包含名为“0”、“1”、“2”的元素……它们也是字典。它们包含名为“file”、“name”、“pid”、“tracknum”的元素。因此,一次参考一本字典,直到您剥去足够多的洋葱层以获取您想要的数据。 -
抱歉,在我这个问题的初稿中,我粘贴了解析后的 JSON 的 xCode 输出。那是个错误。我已将其替换为实际 JSON 的 sn-p。
-
Hot Licks:我了解如何将它用于不仅仅是数字的键,但问题是我无法创建名为 *0 的指针,那么如何指定第一个孩子?
-
为什么需要创建一个名为*0的指针?您不必将字典条目提取到名称与键匹配的变量中。只需获取“trackData”,或者,如果必须,“track0”。
标签: objective-c json jsonmodel