如何从json数组中提取键值并将其传递给变量以分配给标签?

时间:2011-12-16 17:09:53

标签: iphone arrays json label

我有一个填充了json的数组。

rows4 = [dict objectForKey:@"users"];

我有以下行来解析它的键值。

NSString *hotelname = (NSString *) [rows4 valueForKey:@"H_NAME"];

然后我将值分配给视图中的标签,并带有以下行:

LabelName.Text= hotelname;

这里的一切似乎都很好。我用Nslog写日志如下:

NSLog(@"HotelName : %@",hotelname);

这出现在日志中:

[11437:f803]酒店名称:(     “布拉赫布拉酒店” )

然后模拟器在日志中崩溃并出现以下错误:

  

NSArrayI isEqualToString:]:无法识别的选择器发送到实例

我从中理解的是,我分配给标签的变量实际上不是变量,而是一个数组。我对吗?如果是这样,我如何借助键从变量中提取单个值并将其分配给变量,然后我可以将其分配给标签?

我正在使用touchJSON顺便说一句。

2 个答案:

答案 0 :(得分:1)

一种选择是:

if(hotelname.count > 0)    
    LabelName.Text= [hotelname objectAtIndex:0];

答案 1 :(得分:0)

结帐this question。 JSON不是一个数组,它是一个字典。

- (void)viewDidLoad {
        //below is a function from [this tutorial][2]
    [super viewDidLoad];
    NSString *jsonString = [NSString stringWithString:@"{\"foo\": \"bar\"}"];
    NSDictionary *dictionary = [jsonString JSONValue];
    NSLog(@"Dictionary value for \"foo\" is \"%@\"", [dictionary objectForKey:@"foo"]);

        //This is your code, just changed some stuff...

        NSString *hotelname = (NSString *) [jsonString valueForKey:@"?"];
        LabelName.Text= hotelname;
}

希望这有所帮助,欢呼。