Ios 基于JSON格式解析NSArray中的值
我有一个基于JSON格式的NSArray。我从网络上请求它并将其保存在数组中。我试图使用字典获取“categoryname”和“subcore”的值,并将它们存储在新数组中,但它们仍然是空的。我是否必须使用JSON序列化将数组转换回NSData,或者是否有更直接的方法来实现这一点 NSArray详细评分:Ios 基于JSON格式解析NSArray中的值,ios,json,parsing,nsmutablearray,Ios,Json,Parsing,Nsmutablearray,我有一个基于JSON格式的NSArray。我从网络上请求它并将其保存在数组中。我试图使用字典获取“categoryname”和“subcore”的值,并将它们存储在新数组中,但它们仍然是空的。我是否必须使用JSON序列化将数组转换回NSData,或者是否有更直接的方法来实现这一点 NSArray详细评分: { "articles": [ { "abstract": "text", "title": "title"
{
"articles": [
{
"abstract": "text",
"title": "title"
}
],
"subscore": 3,
"categoryname": "Reporting"
},
{
"articles": [
{
"abstract": "text2",
"title": "title"
}
],
"subscore": 1,
"categoryname": "Power"
}]
}
代码:
for(int i=0;i<[self.detailedscore count];i++)
{
NSMutableDictionary*dc=[self.detailedscore对象索引:i];
NSString*分数=[dc objectForKey:@“子核心”];
NSString*categoryname=[dc objectForKey:@“categoryname]”;
[self.allscores addObject:subcore];
[self.allcategories addObject:categoryname];
for(所有类别中的NSString*yourVar){
NSLog(@“您的数组元素是=%@”,yourVar);
}
如果您有阵列,请使用下面的代码
对于(int i=0;i<[self.detailedscore count];i++)
{
{}-->表示dictionary,[]-->array…..这是我将webservices返回值分配为NSArray或NSDictionary….时遵循的规则。。。。
根据您当前的JSON格式,这可能会给您一个想法
NSMutableArray *categoryArray = [NSMutableArray new];
for (NSDictionary *childDict in self.detailedscore)
{
[categoryArray addObject:[childDict objectForkey:@"categoryname"]];
}
希望这有帮助
[NSURLConnection sendAsynchronousRequest:req队列:[NSOperationQueue mainQueue]完成处理程序:^(NSURResponse*响应,NSData*数据,NSError*connectionError){
如果(!connectionError){
NSDictionary*dict=[NSJSONSerialization JSONObjectWithData:数据选项:NSJSONReadingAllowFragments错误:&connectionError];
NSLog(@“Dict%”,Dict);
BOOL isValid=[NSJSONSerialization isValidJSONObject:dict];
如果(有效){
[目标getJSONFromresponseDictionary:dict for Connection:strTag error:connectionError];
}
否则{
NSString*strResponse=[[NSString alloc]initWithData:数据编码:NSUTF8StringEncoding];
[目标getStringFromresponseDictionary:strResponse for Connection:strTag error:error];
}问题不在数组、字典或web请求中。我没有分配NSMutableArray,因此它们一直是空的。代码可以很好地从数组中提取值,以备任何人使用。detailedscore是一个字典,而不是数组。我从web获取它,并将其作为可转换属性存储在中核心数据,然后我将其作为NSArray获取。我的问题是如何从这一点上处理它我会参考这个问题,在你的问题中发布一段有效的JSON怎么样?“我如何解析JSON?”这里几乎每天都有人问问题……所以没有太多的容忍度。@Borrden我搜索过类似的问题。除了一些外部库之外,我没有找到任何东西。我也没有看到任何人在这里回答。很抱歉,我把数组的内容放错了。我修复了它。我不需要获得详细的分数。我已经有了它的存储数组中的d。我需要获取它的所有子核和类别,而不必返回web服务请求。这与我所做的不同吗?你使用的是分数作为键而不是子核。在数组中,你必须对包含字符串的变量进行分数。这只是一个输入错误。我正在打印类别名称。没有解释?没有格式复制粘贴的无关内容?
NSMutableDictionary * dc = [self.detailedscore objectAtIndex:i];
NSString * score = [dc objectForKey:@"subscore"];
NSString * categoryname = [dc objectForKey:@"categoryname"];
[self.allscores score];
[self.allcategories addObject:categoryname];
for (NSString *yourVar in allcategories) {
NSLog (@"Your Array elements are = %@", yourVar);
}
NSMutableArray *categoryArray = [NSMutableArray new];
for (NSDictionary *childDict in self.detailedscore)
{
[categoryArray addObject:[childDict objectForkey:@"categoryname"]];
}