【问题标题】:How To Parse And Extract Nested JSON Response Using SBJson And Objective-C如何使用 SBJson 和 Objective-C 解析和提取嵌套的 JSON 响应
【发布时间】:2011-08-13 03:56:00
【问题描述】:

谁能告诉我如何从下面的 JSON 响应中解析和提取数据节点,即 CM、Dozen、Foot...,以便它可以用作 UITableView 的数据源?

{success: true, dataCount: 11, data: [{"unitName":"CM"},{"unitName":"Dozen"},{"unitName":"Foot"},{"unitName":"Gross"},{"unitName":"Inch"},{"unitName":"K"},{"unitName":"KG"},{"unitName":"LB"},{"unitName":"Piece"},{"unitName":"Set"},{"unitName":"Yard"}]}

在此先感谢您的帮助。

干杯

更新...

Oli 和 Srika,你们太有帮助了!

下面是我的代码...

NSString *myRawJson = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://192.168.0.100/myApp/getUnitInJson.php"]];
//myRawJson 响应如下
{success: true, dataCount: 5, data: [{"unitName":"CM"},{"unitName":"Dozen"},{"unitName":"Foot"},{"unitName":"Gross" },{"unitName":"英寸"}]}
SBJsonParser *parser = [[SBJsonParser alloc] init];
NSArray *myParsedJson = [[解析器 objectWithString:myRawJson 错误:nil] 复制];
NSArray *myExtractedData = [myParsedJson valueForKey:@"data"];
NSLog(@"RawJsonString: %@", myRawJson);
// 输出:RawJsonString: {data:[{"unitName":"CM"},{"unitName":"Inch"},{"unitName":"Foot"},{"unitName":"Yard"}, ]}
NSLog(@"myExtractedData 计数:%@", [myExtractedData 计数]);
// 输出:myExtractedData 计数:(null)

myExtractedData 中没有任何内容。我做错什么了吗?

请帮忙。

【问题讨论】:

    标签: ios json parsing


    【解决方案1】:

    您是否让用户在 UITableView 中添加/修改数组,这就是您需要它可变的原因吗?

    无论如何,您可以这样做:从“wholeResponse”字典访问数据数组,然后将该数组转换为可变数组。

    NSArray *data = [wholeResponse valueForKey:@"data"];
    NSMutableArray *mutableData = [NSMutableArray arrayWithArray:data];
    
    // Do something with the mutable data.
    

    【讨论】:

    • 您好奥利,感谢您的快速回复。我刚刚更新了我的问题。请检查一下并帮助我。
    【解决方案2】:

    从整个NSDictionary 中获取data - NSArray values = [data objectForKey:@"data"]。 这给出了与data 关联的NSArray

    要获得 CM 试试这个 -NSString *CM = [[values objectAtIndex:0] objectForKey:@"unitName"] Dozen,Foot 也是如此。等等

    然后您可以将此数据放入UITableView

    更新:试试这个。我假设您使用 this 作为 JSON 解析器。

    NSDictionary *myParsedJson = [myRawJson JSONValue];
    NSArray *myExtractedData = [myParsedJson valueForKey:@"data"];
    NSLog(@"myExtractedData Count: %@", [myExtractedData count]);
    

    【讨论】:

    • Srikar,非常感谢您的快速回复。但是 NSMutableArray 有 getObjectForKey 方法吗?我似乎找不到它。
    • 对不起,错字!!。应该是objectForKeyNSDictionary
    • Srikar,我刚刚更新了我的问题。请看看它并帮助我。
    • @Wong,这不是NSArray *myParsedJson 错了吗?不应该是NSDictionary吗?
    • 我只是改成NSDictionary *myParsedJson,结果还是一样的。
    猜你喜欢
    • 2019-01-14
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 2014-01-10
    相关资源
    最近更新 更多