簡體   English   中英

如何使用以下格式解析JSONKit中的數據

[英]How to parse the data in JSONKit with following format

我有以下數據,我想打印具有以下結構的項目列表。

讓我知道我該怎么做。

我無法使用以下語法獲取數據。

/* 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返回的對象也是不可變的,因此您不能將它們分配給可變對象。 您將需要使用copyMutable變類型的copyMutable方法來獲取可變類型。 請記住, copyMutable需要在非ARC項目中發布。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM