Iphone 如何用以下格式解析JSONKit中的数据
我有以下数据,我想打印具有以下结构的项目列表 让我知道我该怎么做 我无法使用以下语法获取数据Iphone 如何用以下格式解析JSONKit中的数据,iphone,objective-c,json,jsonkit,Iphone,Objective C,Json,Jsonkit,我有以下数据,我想打印具有以下结构的项目列表 让我知道我该怎么做 我无法使用以下语法获取数据 /* Data to Row Json from URL*/ NSString *MyRowJson = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; /* Copy data to Items
/* Data to Row Json from URL*/
NSString *MyRowJson = [NSString stringWithContentsOfURL:url
encoding:NSUTF8StringEncoding error:nil];
/* Copy data to Items from MyRowJson*/
NSDictionary *items = [MyRowJson objectFromJSONStringWithParseOptions:true];
/*get the deals data*/
NSMutableArray *ResponseData = [items objectForKey:@"deals"];
/*Get the count and based on this loop through the objects.*/
NSLog(@"deals data count is %d",[ResponseData count]);
这里我在打印计数时遇到异常
以下是我的数据结构
{
"meta": {
"code": 200
},
"response": {
"deals": [
{
"id": 32373,
"date_added": "2011-01-13 12:12:50",
"end_date": "2011-01-14 10:00:00",
"active": 1,
"discount": {
"raw": 71,
"formatted": "71%"
},
"price": {
"raw": "85.00",
"formatted": "$85"
},
"value": {
"raw": "300.00",
"formatted": "$300"
},
"title": "$85 For $300 Babyface Facial At Park Avenue MedSpa",
"yahoo_title": "71% off Babyface Facial",
"url": "http://yahoo.com/aff/click/?deal=AvwTADtE&key=F374EFbM",
"yahoo_url": "http://yahoo.com/new-york/livingsocial/85-for-300-babyface-facial-at-park-avenue-medspa/",
"mobile_url": "http://m.yahoo.com/new-york/livingsocial/85-for-300-babyface-facial-at-park-avenue-medspa/",
"images": {
"image_big": "http://d22nv2k05ynu7x.cloudfront.net/deal_images/deal/85-for-300-babyface-facial-at-park-avenue-medspa-1294920769_display_image.jpg",
"image_small": "http://d22nv2k05ynu7x.cloudfront.net/deal_images/deal/85-for-300-babyface-facial-at-park-avenue-medspa-1294920769_small_image.jpg"
},
"division": {
"slug": "new-york",
"name": "New York",
"active": 1,
"time_zone_diff": -4,
"lat": "40.7142690000000000",
"lon": "-74.0059730000000000",
"url": "http://yahoo.com/new-york/"
},
"tags": [
{
"name": "Facial",
"slug": "facial",
"url": "http://yahoo.com/new-york/deals/facial/"
},
{
"name": "Spa",
"slug": "spa",
"url": "http://yahoo.com/new-york/deals/spa/"
}
],
"business": {
"name": "Park Avenue MedSpa",
"url": "",
"locations": [
{
"address": "565 Park Ave",
"locality": "New York",
"phone": "212-593-8821",
"lat": null,
"lon": null,
"state": NY,
"zip_code": "11211"
}
]
},
"source": {
"name": "LivingSocial",
"slug": "livingsocial",
"paid": 0,
"url": "http://yahoo.com/new-york/livingsocial"
}
}
]
}
}
您正在正确地传递数据,并从最上面的节点获取交易,但它位于响应节点下:
NSString *jsonData = [NSString stringWithContentsOfURL:url
encoding:NSUTF8StringEncoding error:nil];
NSError *error = nil;
NSDictionary *items = [jsonData JSONObjectWithData:data options:0 error:&error];
if (!items) {
NSLog(@"Could not parse json:%@", error);
return;
}
/*get the deals data*/
NSDictionary *response = [items objectForKey:@"response"];
NSArray *dealsArray = [response objectForKey:@"deals"];
/*Get the count and based on this loop through the objects.*/
NSLog(@"deals data count is %d",[dealsArray count]);
另外,从JSON返回的对象是不可变的,因此不能只将它们分配给可变对象。
您需要使用inmutable类型的copyMutable
方法来获取可变类型。
请记住,
copyMutable
需要在非ARC项目中发布。您发布的JSON无效,请自行检查。问题是“state”:NY
需要引用NY“state”:“NY”
将其排序为已更新,并让我知道如何前进,因为这是来自实际数据的片段,数据非常庞大,所以我无法在此处粘贴,这可能是一种类型。。。请让我知道。Thtanks感谢你的快速回答:)虽然在打破砖头后,我遇到了mountain。。如何列出交易部分中每个部分的内部属性。请帮忙。如何循环思考数据并从其细分市场中输入信息我想打印企业名称。。我深入研究了四个元素的业务阵列,现在需要名称。NSArray*BusinessArray=[[dealsArray objectAtIndex:i]objectForKey:@“业务”];打印姓名的一些代码