0
{"Overviews":
    [
     {"AAAA": [
               {"Generala": "sometext",
                "Generalb": "sometext",
                "Generalc": "sometext"}
              ],
     "BBBB": [
               {"Generala": "sometext",
                "Generalb": "sometext",
                "Generalc": "sometext"}
              ]
      }
     ]
 }

こんにちは、SBJson を使用してこの json を解析しました。NSArray *json = [jsonObject valueForKey:@"Overviews"]; を割り当てたとき。データの階層化がうまくいきませんでした。Generala を解析するために、1 つの NSDictionary、2 つの NSArray、および 1 つの NSString を使用しました。

私の目標は、次のようにデータ「Generala」を解析することです。

NSDictionary *data = [overviews valueForObject:@"AAAA"];
NSString *generals = [data valueForObject:@"Generala"];

json ファイルで何が間違っていますか? 前もって感謝します。

4

3 に答える 3

2

そこには余分な配列があります。概要は、ディクショナリ内に 1 つの要素を持つ配列です。それはただの辞書であるべきです。同じことが AAAA と BBBB にも当てはまります。これらは、単なる辞書であるべきなのに、単一の辞書を含む配列です。

基本的に、JSON 内のすべての角かっこを削除するだけです。

于 2012-08-20T17:26:42.417 に答える
1
NSArray *dataArray = [overviews objectForKey:@"AAAA"];
NSDictionary *dataDict = [dataArray objectAtIndex:0];
NSString *generals = [dataDict objectForKey:@"Generala"];

これで正しい値が得られますが、ご覧のとおり、インデックス「0」を「ハードコード」する必要がありました。特定の配列に到達するには、そこにいくつかのロジックが必要です。

またはjsonを次のように変更します。

{"Overviews":
     {"AAAA":
               {"Generala": "sometext",
                "Generalb": "sometext",
                "Generalc": "sometext"},
     "BBBB":
               {"Generala": "sometext",
                "Generalb": "sometext",
                "Generalc": "sometext"}
      }
}

NSDictionary *dataDict = [overviews objectForKey:@"AAAA"]; NSString *string = [dataDict objectForKey:@"Generala"];

于 2012-08-20T19:52:03.837 に答える