0

これが簡略化されたJSONファイルです。ネットサービスからダウンロードして、結果をテーブルで解析する必要があります。

編集:オンラインツールでクリーンアップおよびフォーマットされた、より正確なコードを提供します:

{
  "main": [
    {
      "id": 0, <--- float value
      "type": "type0", <--- STRING value
      "valueA": {
        "valueA1": 1, <--- float value
        "valueA2": 2, <--- float value
        "valueA3": 3  <--- float value
      },
      "valueB": {
        "valueB1": 1, <--- float value
        "valueB2": 2  <--- float value
      },
      "valueC": [
        {
          "valueC1": "string0C1", <--- STRING value
          "valueC2": 2, <--- float value
          "valueC3": 3, <--- float value
        }
      ]
    },

オンラインツールjsonviewer.stack.huによってフォーマットされました:

ここに画像の説明を入力してください

AFJSONRequestOperationを使用して解析する必要があり、次のコードを記述します。

NSMutableArray *main = [JSON objectForKey:@"main"];
arrayID = [main valueForKey:@"id"];
arrayType = [main valueForKey:@"type"];

NSMutableArray *arrayValueC = [main valueForKey:@"valueC"];
NSMutableString *stringC1 = [arrayValueC valueForKey:@"valueC1"]; 

// I CANT USE objectForKey, XCode give an exception -[__NSArrayI objectForKey:]: unrecognized selector sent to instance

NSLog(@"id: %@",arrayID);
NSLog(@"type: %@",arrayType);
NSLog(@"string: %@",stringC1);

解析すると、NSLogから次の結果が得られます。

id: (
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9
)

type: (
    type0,
    type1,
    type2,
    type3,
    type4,
    type5,
    type6,
    type7,
    type8,
    type9
)

string: (
        (
        "string0C1"
    ),
        (
        "string2C1"
    ),
        (
        "string2C1"
    ),
        (
        "string3C1"
    ),
        (
        "string4C1"
    ),
        (
        "string5C1"
    ),
        (
        "string6C1"
    ),
        (
        "string7C1"
    ),
        (
        "string8C1"
    ),
        (
        "string9C1"
    )
)

すべてが完璧であることがわかるので、ID(float)とTYPE(string)のすべての値を推定できますが、valueC1文字列のすべてのオブジェクトの丸括弧は嫌いです。括弧と引用符なしでクリーンなvalueC1を取得するにはどうすればよいですか? ?あなたがいくつかのコードを提供できるかどうかお願いします。ありがとう!

4

1 に答える 1

3

使用しないでくださいvalueForKey:objectForKey:代わりに使用してください。これはおそらく大きな問題です。しかし、一度使用すると、新しい問題が発生する可能性があります。

arrayValueA以下には、最初にアクセスしたときに明らかになる問題が含まれています。

NSMutableArray *arrayValueA = [arrayMain objectForKey:@"valueA"];

に格納されている要素valueAはオブジェクト、つまり辞書であり、配列ではありません。

最後に、単純化されたJSONはとにかく無効です。いくつかの値に二重引用符がありません。例:

"id": id0

する必要があります:

"id": "id0"

実際のJSONデータと実際のコードをより適切に表示できます。

アップデート:

次のコードでJSONデータにアクセスできるはずです。

NSArray *main = [JSON objectForKey:@"main"];
NSDictionary* main0 = [main objectAtIndex:0];
arrayID = [main0 objectForKey:@"id"];
arrayType = [main0 objectForKey:@"type"];

NSArray *arrayValueC = [main objectForKey:@"valueC"];
NSDictionary *elem0 = [arrayValueC objectAtIndex:0];
NSString *stringC1 = [arrayValueC objectForKey:@"valueC1"]; 

NSLog(@"id: %@",arrayID);
NSLog(@"type: %@",arrayType);
NSLog(@"string: %@",stringC1);
于 2013-01-08T21:55:04.843 に答える