所以我有一个NSDictionary
来保存JSON数据,执行以下操作:
NSDictionary* dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&someError];
当我NSLog我的字典时,我得到下面的输出。
2015-06-11 17:13:49.699 AmigoDash[57994:1195566] (
{
"_id" = {
"$id" = 5579fde2e4b0588ab009f841;
};
hours = "10-11";
image = imageURL;
name = "Boleskine Bistro";
},
{
"_id" = {
"$id" = 5579fe1fe4b0588ab009f84a;
};
hours = "9-11";
image = imageURL;
name = Amrikos;
}
)
我现在面临的问题是试图遍历字典。当我尝试这样做时,代码崩溃了。我刚开始使用JSON和iOS。有点不知所措。我最终需要从字典中的每个唯一对象获取名称和图像信息,因此我必须遍历字典。
答案 0 :(得分:1)
从您的日志中,您的json是一个数组
我认为使用keyPath很容易
NSArray * array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&someError];
NSArray * namesArray = [array valueForKeyPath:@"name"]; //This will get a names array
NSArray * urlArray = [array valueForKeyPath:@"image"]; //This will get a url Array
如果你还想循环
NSArray * array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&someError];
for (NSDictionary * dic in array) {
NSString * name = [dic valueForKey:@"name"];
NSString * hours = [dic valueForKey:@"hours"];
//So on
}
答案 1 :(得分:0)
您需要了解JSON组件的基础知识以及如何将其解析为iOS。我会给你一个简单的例子here。我通常用于解析JSON
{[
{
"array": [
1,
2,
3
],
"boolean": true,
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d",
"e": "f"
},
"string": "Hello World"
},
{
"array": [
1,
2,
3
],
"boolean": true,
"null": null,
"number": 123,
"object": {
"a": "b",
"c": "d",
"e": "f"
},
"string": "Hello World"
}
]}
这是您将获得的一般JSON。
这些解析如下
[]
表示array
被解析为NSArray
{}
表示dictionary
被解析为NSDictionary
true
或false
是BOOL
int
,NSInteger
,NSNumber
等""
的文字适用于NSString
现在你应该首先注意结构,比如内在的结构。然后解析。
上面举例说。最外面的对象是NSDictionary
({}
)。
NSDictionary *cityJSON = [NSJSONSerialization JSONObjectWithData:**Above JSON Data**];
我们内部有一个NSArray
([]
)
NSArray *testFeeds = [NSJSONSerialization JSONObjectWithData: cityData options:NSJSONReadingMutableContainers error:nil];
每个testFeeds
对象都是NSDictionary
。我们从最外层到最里面的对象。