2

以下のような JSON 応答から読み取ろうとしています

{ 
"URL": 
  { 
     "target": "www.google.com", 
    "0": [ 92, 15 ], 
    "1": [ 92, 16 ], 
    "2": [ 74, 15 ], 
    "4": [ 5, 16 ] 
  } 
}

SBJSON を使用して、「ターゲット」フィールドを取得できました。

testString = [[result objectForKey:@"URL"] objectForKey:@"target"];

NSLOG を実行すると、www.google.com が表示されます

しかし、このコードは他の鍵ペアでは機能しません。

testString = [[result objectForKey:@"URL"] objectForKey:@"0"];

testString を印刷しようとすると、エラーが発生します。

コンソールに値を出力しました。

(lldb) po testString
(NSString *) $4 = 0x0864b190 <__NSArrayM 0x864b190>(
65,
27
)

これらの 65 と 27 を抽出するにはどうすればよいですか?

4

3 に答える 3

1

これを行う:

if([result objectForKey:@"URL"] objectForKey:@"0"] isKindofClass:[NSArray class])
{
   NSArray *arritems = [[result objectForKey:@"URL"] objectForKey:@"0"];
   NSMutableArray *values = [NSMutableArray array];
   for( id *item in arritems)
   {
      if([item is isKindOfClass:[NSString class]])
      {
         NSString * valueStr = item; 
         [values addObject:valueStr];
       }
      else if([item is isKindOfClass:[NSDecimalNumber class]])
      {
        NSDecimalNumber * valueNum = item; 
        [values addObject:valueNum];
       }
   } 
   NSLog(@"%@",values);
}

キー値1、2、3に対して同じロジックを繰り返します

于 2012-08-30T12:49:55.760 に答える
1

それはオブジェクトの配列です。試す:

NSArray * array = [[result objectForKey:@"URL"] objectForKey:@"0"];
id a = [array objectAtIndex:0]; // 65
id b = [array objectAtIndex:1]; // 27

// now determine the type of objects in the array, and use them appropriately:
if ([a isKindOfClass:[NSString class]]) {
  NSString * string = a;
  ...use appropriately
}
else if ([a isKindOfClass:[NSDecimalNumber class]]) {
  NSDecimalNumber * number = a;
  ...use appropriately
}
...
else {
  assert(0 && "type not supported");
}
于 2012-08-30T12:51:26.067 に答える
0
NSArray *data = [[result objectForKey:@"URL"] objectForKey:@"0"];

その後、あなたのアイテムが入っ[data objectAtIndex:0][data objectAtIndex:1]

于 2012-08-30T12:52:36.213 に答える