2011-12-06 13 views
1

次のデータがあり、以下の構造のアイテムのリストを印刷したいと思います。JSONKitのデータを次の形式で解析する方法

どうすればいいのか教えてください。

次の構文を使用してデータを取得できません。

/* 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]); 

ここでは、カウントを印刷中に例外があります。

以下は、私のデータの構造です。あなたは、データを正しくpasringしていて、最上位のノードから取引をつかむが、それは、応答ノードの下にある

{ 
    "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" 
       } 
      } 
     ] 
    } 
} 
+1

投稿したJSONが有効ではありません。自分のhttp://jsonlint.comで確認してください。問題は「状態」です。NY:NYは「状態」を引用する必要があります:「NY」 – rckoenes

+1

Cosiderこれが更新されました。実際のデータからスニペットを引き出す方法を教えてください。巨大なので私はここにペーストすることができませんでした。これはタイプかもしれません...私に教えてください。 thtanks –

答えて

3

:また、JSONあちこちに返されたオブジェクト

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]); 

あなたは、このように、inmutableありますそれらを可変オブジェクトに割り当てることはできません。 変更可能な型を取得するには、変更可能な型のメソッドcopyMutableを使用する必要があります。 copyMutableは非ARCプロジェクトでリリースする必要があることに注意してください。

+1

スーパークイック回答ありがとう:)私は山と会うレンガを壊した後..どのように私は、取引セグメントwithingすべてのセクションの内部プロパティをリストすることができます。これで助けてください。データをループしてそのセグメントから情報を入れる方法 –

+0

私はビジネス名を印刷したいと思っています。私は4つの要素を持つビジネス配列を得るために掘り下げ、現在は名前が必要です。 NSArray * BusinessArray = [[dealsArray objectAtIndex:i] objectForKey:@ "ビジネス"];名前を印刷するためのいくつかのコード –