0

こんにちは、解析する必要がある次のjsonがありますが、内部配列の解析に苦労しています。私が現在持っているのは、内部配列のそれぞれを印刷するだけですが、各タイトルを印刷して、タイトルを配列に追加したいと思います。助けてくれてありがとう!

JSON

{"nodes":[{
    "node":{
        "nid":"1420857",
        "title":"Title 1",
        "votes":"182",
        "popular":"True",
        "teaser":"Teaser 1"
    }},
    {"node":{
        "nid":"1186152",
        "title":"Title 2",
        "votes":"140",
        "popular":"True",
        "teaser":"Teaser 2"
    }},
    {"node":{
        "nid":"299856",
        "title":"Title 3",
        "votes":"136",
        "popular":"True",
        "teaser":"Teaser 3"
    }}
]}

Json パーサー

    NSError *error = nil;
    NSData *jsonData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.somefilename.json"]];
    if (jsonData) {
        id jsonObjects = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
        if (error) {
            NSLog(@"error is %@", [error localizedDescription]);
            return;
        }
        NSArray *keys = [jsonObjects allKeys];
        for (NSString *key in keys) {
            NSLog(@"%@", [jsonObjects objectForKey:key]);
        }
    } else {
        // Handle Error
    }
4

2 に答える 2

1

型キャストするだけです:

NSArray *nodes = (NSArray*)[jsonObjects objectForKey:@"nodes"];
for (NSDictionary *node in nodes){
     // do stuff...
}

id( -[objectForKey:]、 、 など) を返すメソッドは、-[objectAtIndex:]任意の object-c オブジェクトを返すことができます。適切な操作を実行するには、型キャストするものを事前に知っておく必要があります。JSON は、同等の NSObject に変換されます。

  • object->NSDictionary
  • array->NSArray
  • string->NSString
  • number->NSNumber
  • boolean->NSNumber
  • float->NSNumber
  • null->NSNull

さまざまな NSNumbers を区別するには、適切な型メソッドを呼び出す必要があります: -[intValue]-[boolValue]-[floatValue]. 詳細については、NSNumber のドキュメントを参照してください。

于 2012-09-07T06:00:52.163 に答える