将NSString解析为JSON

Bra*_*don 2 php iphone parsing json objective-c

我已经阅读了几个论坛,但我似乎无法完成这个简单的任务.我在Xcode中有一个View,它指向一个PHP脚本并将结果存储为下面的NSString:

[{ "ID": "16", "名称": "鲍勃", "年龄": "37"}]

我在解析此NSString时遇到问题.这是我获取NSString的内容的方式:

NSString *strURL = [NSString stringWithFormat:@"http://www.website.com/json.php?
id=%@",userId];

// to execute php code
NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];

// to receive the returend value
NSString *strResult = [[NSString alloc] initWithData:dataURL 
encoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

如何将结果(strResult)转换为JSON并从中取出对象?我会假设下面的东西,但我知道我错过了一些东西

NSString *name = [objectForKey:@"name"];
NSString *age = [objectForKey:@"age"];
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒.谢谢!

Dai*_*jan 13

使用类NSJSONSerialization来读取它

id jsonData = [string dataUsingEncoding:NSUTF8StringEncoding]; //if input is NSString
id readJsonDictOrArrayDependingOnJson = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];
Run Code Online (Sandbox Code Playgroud)

在你的情况下

NSArray *readJsonArray = [NSJSONSerialization JSONObjectWithData:dataURL options:0 error:nil];
NSDictionary *element1 = readJsonArray[0]; //old style: [readJsonArray objectAtIndex:0]
NSString *name = element1[@"name"]; //old style [element1 objectForKey:@"name"]
NSString *age = element1[@"age"]; //old style [element1 objectForKey:@"age"]
Run Code Online (Sandbox Code Playgroud)