[英]How to parse JSON in Objective-C
我有这个 json 字符串
{
"@uri": "http://localhost:8080/TunisairRESTful/resources/cities/",
"city": [
{
"@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ABJ/",
"agencyCollection": {
"@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ABJ/agencyCollection/"
},
"codecit": "ABJ",
"country": {
"@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ABJ/country/"
},
"namecit": "ABIDJAN"
},
{
"@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ALG/",
"agencyCollection": {
"@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ALG/agencyCollection/",
"agency": [
{
"@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ALG/agencyCollection/3/"
},
{
"@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ALG/agencyCollection/4/"
}
]
},
"codecit": "ALG",
"country": {
"@uri": "http://localhost:8080/TunisairRESTful/resources/cities/ALG/country/"
},
"namecit": "ALGER"
},
{
"@uri": "http://localhost:8080/TunisairRESTful/resources/cities/AMS/",
"agencyCollection": {
"@uri": "http://localhost:8080/TunisairRESTful/resources/cities/AMS/agencyCollection/",
"agency": [
{
"@uri": "http://localhost:8080/TunisairRESTful/resources/cities/AMS/agencyCollection/5/"
},
{
"@uri": "http://localhost:8080/TunisairRESTful/resources/cities/AMS/agencyCollection/6/"
}
]
},
"codecit": "AMS",
"country": {
"@uri": "http://localhost:8080/TunisairRESTful/resources/cities/AMS/country/"
},
"namecit": "AMSTERDAM"
}
]
}
我想解析它,我写了这段代码
NSString *myJSON = [[NSString alloc] initWithContentsOfFile:responseString encoding:NSUTF8StringEncoding error:NULL];
NSDictionary *json = [myJSON JSONValue];
//NSLog(responseString);
NSArray *citysList = [json objectForKey:@"city"];
NSLog(@"ok");
NSLog(@" number of element : %@", [citysList count]);
但我有 0 个元素,请帮忙
您正在执行 initWithContentsOfFile 但传入一个字符串。 您是否尝试过简单的 [responseString JSONValue]? 您的代码表明 responseString 具有您尝试打开的文件的路径,而不是您的完整响应字符串本身。
迈克尔是对的。 这是一个更详细的答案:
initWithContentsOfFile
接受一个包含文件路径的字符串(例如“/users/mehdi/documents/myFile.txt”)。 您似乎正在传递您的实际 JSON 字符串,这不是文件路径。 结果, initWithContentsOfFile
可能返回nil
。
通过询问来检查:
if (myJSON == nil) NSLog(@"myJSON variable == nil!");
如果它是 nil,那么您的代码也将json
和citysList
设置为 nil。
尝试这个:
NSDictionary *json = [responseString JSONValue];
NSArray *citysList = [json objectForKey:@"city"];
NSLog(@" number of element : %d", [citysList count]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.