这是我的字符串:
[{"id":"1","nome":"Adriatik"},{"id":"2","nome":"Ard"},{"id":"3","nome":"Albana"},{"id":"4","nome":"Adriana"}]
我想将JSON字符串的所有“名称”解析为NSMutableArray
。
抱歉我的英文!
答案 0 :(得分:1)
每当我必须处理一些JSON代码时,我首先要做的是创建一个基于JSON文本的类。因此,例如,如果您的JSON代表美国州,请创建一个“州”类。
你可以使用一个很酷的小产品。它被称为Objectify,费用约为15美元。毫无疑问,人们可以就可能做类似的其他免费事情提出建议。
对于实际的Json解析,我使用SBJson。对于Objective-C,有很多Json解析框架,所以一定要仔细看看你喜欢什么。
接下来,使用SBJson,进行实际解析:
-(NSDictionary *)parseJsonFromUrl
{
NSAssert(mUrl, @"Must set a url before invoking %@", __PRETTY_FUNCTION__);
// Create new SBJSON parser object
SBJsonParser *parser = [[SBJsonParser alloc] init];
// Prepare URL request to download JSON
NSURLRequest *request = [NSURLRequest requestWithURL:mUrl];
// Perform request and get JSON back as a NSData object
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
// Get JSON as a NSString from NSData response
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
// parse the JSON response into an object
// Here we're using NSArray since we're parsing an array of JSON status objects
return [parser objectWithString:json_string error:nil];
}
返回NSDictionary
。您知道必须查看该字典以设置模型类的值。以下是如何执行此操作,同时将值加载到NSMutableArray
:
-(void)downloadJsonData
{
NSDictionary *statesDict = [self parseJsonFromUrl];
NSMutableArray *statesArray = [NSMutableArray arrayWithCapacity:[statesDict count]];
for (NSDictionary *stateDict in stateDict)
{
State *aState = [[[State alloc] init] autorelease];
aState.stateId = [stateDict valueForKey:@"id"];
aState.name = [stateDict valueForKey:@"name"];
[statesArray addObject:aState];
}
}
请注意,我使用的属性名称为stateId
而不是id
,以免与Objective-C对象指针类型冲突。
答案 1 :(得分:0)
使用SBJson类并调用-JSONValue方法
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
// NSLog(@" Response String %@", responseString);
//converted response json string to a simple NSdictionary
NSMutableArray *results = [responseString JSONValue];