1

我在 NSString 中有 JSON 值。我正在尝试解析来自 NSString JSonValue 的值。

NSString 值如:

result =  [{"no":"01","send":"2010-05-03 01:26:48","from":"0000000000","to":"1111111111","text":"abcd"}]

我已经尝试使用下面的代码来解析值 no、send、from、to、text。

    NSString *jsonString = result;
    NSDictionary *jsonArray = [jsonString jsonValue]; //Am trying to save the values from NSString to NSDictionary the app getting crash here.
    NSLog(@"JsonDic : %@", jsonArray);

任何人都可以帮助解析来自 NSString 的 JSon 值吗?提前致谢。

4

3 回答 3

1

对于 iOS5,您可以使用NSJSONSerialization

NSError *error;
NSString *json = @"[{\"no\":\"01\",\"send\":\"2010-05-03 01:26:48\",\"from\":\"0000000000\",\"to\":\"1111111111\",\"text\":\"abcd\"}]";
id jsonObj = [NSJSONSerialization JSONObjectWithData:[json dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:&error];

你也可以使用SBJson

于 2012-07-04T10:42:01.657 回答
0

戈皮纳特。我已经提到了代码,请试试这个。我已经测试了我可以得到否。

SBJSON *parser = [[SBJSON alloc] init];  

NSDictionary *jsonArray = (NSDictionary *) [parser objectWithString:result error:nil];  
NSLog(@"jsonArray : %@", jsonArray);

NSArray *depositArray = [jsonArray valueForKey:@"no"];
NSLog(@"depositArray : %@", depositArray);

请测试并让我知道您是否遇到任何问题。谢谢。

于 2012-07-04T10:41:53.697 回答
0

解析 JSON 有点复杂。

就我而言,我使用 SBJSON,你可以从这里下载:http ://stig.github.com/json-framework/

这是一组简单的文件,可以放入您的项目中。我建议成立一个专门的小组。

完成后,您可以使用以下代码:

NSError *jsonError;
NSDictionary *jsonResults;

SBJsonParser* parser = [[SBJsonParser alloc]init];
jsonResults = [parser objectWithString:YOURSTRING error:&jsonError ];

if (jsonResults == nil) {
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:[NSString stringWithFormat:@"Something bad happened with JSON : %@ : %@",YOURSTRING,[ jsonError localizedDescription ]] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alertView show];
    [alertView release];
} else {   
   NSLog(@"JSON result : %@",jsonResults);

}

如果您需要更多信息,可以在 SBJSon 上找到很好的教程,例如:http ://www.touch-code-magazine.com/tutorial-fetch-and-parse-json/

于 2012-07-04T10:43:35.140 回答