2

おそらく私は考えすぎているか、自分自身を混乱させているのかもしれませんが、私の頭はこれについてのループで立ち往生しており、抜け出すことができません.

次の形式の JSON があります: ( http://jsonformatter.curiousconcept.com/で検証済み)

{
  id: 1,
  sections: "5",
  total: "10",
  result: {
    3: 00PM: [
      {
        name: "Anurag",
        status: "Web"
      },
      {
        name: "Anurag2",
        status: "Web2"
      }
    ],
    5: 00PM: [
      {
        name: "Anurag",
        status: "Seated"
      }
    ],
    6: 00PM: [
      {
        name: "Anurag4",
        status: "Web4"
      },
      {
        name: "Anurag5",
        status: "Web5"
      },
      {
        name: "Anurag6",
        status: "Web6"
      },
      {
        name: "Anurag7",
        status: "Web7"
      }
    ]
  }
}

私はこれまでのところこれを持っています:

        NSDictionary *dict = [response JSONValue];
        NSDictionary *results = [dict objectForKey:@"result"];

        NSInteger num_results = [[dict valueForKey:@"total"] intValue];
        NSInteger num_sections = [[dict valueForKey:@"sections"] intValue];

        NSMutableArray *sections = [[NSMutableArray alloc] initWithCapacity:num_sections];
        NSMutableArray *objarr = [[NSMutableArray alloc] initWithCapacity:num_results];
        NSMutableArray *obj= [[NSMutableArray alloc] initWithCapacity:num_sections];
        NSMutableArray *temp = [[NSMutableArray alloc] initWithCapacity:num_results];

        for (NSString* key in results) {
            NSLog(@"Key: %@", key); // prints out 3:00 PM...5:00 PM etc...
            [obj addObject:[results objectForKey:key]]; // nested objects within each key are saved in the array
            NSLog(@"Object 1: %@", obj);
        }

        for (int i = 0; i < [obj count]; i++) {
            //NSLog(@"Object 2: %@", [obj objectAtIndex:i]);
            [temp addObject:[obj objectAtIndex:i]]; // I take each object from previous array and save it in a temp array
            for (int i = 0; i < num_results; i++) {
                NSLog(@"Object 3: %@", [temp objectAtIndex:i]);
                **[objarr addObject:[temp objectAtIndex:i]]; // I want to extract the object within the object but cannot get it to work**
            }   
        }

結果内の 3 つのキーのそれぞれにオブジェクトの配列を作成できます。しかし、それらの中の各オブジェクトを個別のオブジェクトとして取得して配列に保存することはできません。

たとえば、私が持っている NSArray では:

Object 3: (
        {
        name = "Anurag ";
        status = Web;
    },
        {
        name = "Anurag ";
        status = Web;
    }
)

このオブジェクト内の 2 つのオブジェクトを取得し、両方を配列に保存するにはどうすればよいですか? 主な問題は、個々のオブジェクトを取得するためにキー名を参照できないことだと思います。

4

3 に答える 3

4

次のコードを使用できます。

NSDictionary *json = [response JSONValue];

// Get the objects you want
NSArray *items = [json valueForKeyPath:@"result.6: 00PM"];

これはNSArray、キー6: 00PMのオブジェクトを含む を返します。

こちらのリンクもご確認ください。

于 2012-07-06T20:12:45.350 に答える
1

2 番目の forループでint iを再定義しています。次のようなものを試してください

for(int j = 0; j < num_results; j++)
于 2012-07-06T20:15:57.607 に答える
1
[temp addObject:[obj objectAtIndex:i]]; // I take each object from previous array and save it in a temp array

これは無駄な動きです。事実上、obj配列を配列にコピーするだけですtemp-値は追加されません。

于 2012-07-06T20:55:54.013 に答える