在iOS中对JSON对象排序
我想在iOS中按“R”、“G”、“B”排序。在非“浅”RGB和“暗”RGB上排序 如何对JSON对象进行排序?请帮帮我 我能对“R”、“G”、“B”进行排序。但物体“红”、“绿”、“蓝”的排列顺序不对在iOS中对JSON对象排序,ios,json,Ios,Json,我想在iOS中按“R”、“G”、“B”排序。在非“浅”RGB和“暗”RGB上排序 如何对JSON对象进行排序?请帮帮我 我能对“R”、“G”、“B”进行排序。但物体“红”、“绿”、“蓝”的排列顺序不对 “Colors” : { “Red : { “R” : 255, “G” : 100, “B” : 190, “Light” : { “R” : 195,
“Colors” : {
“Red : {
“R” : 255,
“G” : 100,
“B” : 190,
“Light” : {
“R” : 195,
“G” : 420,
“B” : 255,
},
“Dark” : {
“R” : 36.3458,
“G” : 125.047,
“B” : 49.4638,
}
},
“Green” : {
“R” : 12,
“G” : 232,
“B” : 150,
“Light” : {
“R” : 195,
“G” : 420,
“B” : 255,
},
“Dark” : {
“R” : 36.3458,
“G” : 125.047,
“B” : 49.4638,
}
},
“Blue” : {
“R” : 105,
“G” : 200,
“B” : 150,
“Light” : {
“R” : 195,
“G” : 420,
“B” : 255,
},
“Dark” : {
“R” : 36.3458,
“G” : 125.047,
“B” : 49.4638,
}
},
}
输出
NSSortDescriptor * brandDescriptor = [[NSSortDescriptor alloc] initWithKey:@"R" ascending:YES];
NSArray * sortDescriptor = [NSArray arrayWithObject:brandDescriptor];
红色12
绿色105
蓝色255
你可以看到我按“R”排序,值按排序顺序排列,但颜色值“红、绿、蓝”不按顺序排列
提前感谢。其他人在评论中所说的是正确的,但从我在你的问题中看到的情况来看,你不需要真正排序。如果我理解正确,您只需要在JSON中的“红色”、“绿色”和“蓝色”字典中获取“R”的值。一种方法是: Red 12 Green 105 Blue 255 这有用吗
(此外,您可能需要为R值使用更好的格式说明符,具体取决于它们的返回方式。如果整数使用%d,如果浮点/双精度使用%f)您不会对JSON对象进行排序。但如果JSON数据加载到数组中,则可以对数组进行排序。@rmaddy@user3908542您的json对象中没有任何数组。只有数组是
有序集合
,您拥有的是字典,而字典是无序集合
,因此您无法对它们进行排序。正如rmaddy所说,您必须将它们存储在一个数组中才能对它们进行排序。@maddy和@HAS:您都不正确。NSDictionary
只是一个JSON对象的表示。这种容器恰好是一个无序的关联容器,JSON对象可以很好地表示为std::map
,这是一个有序的关联容器,因此可以根据其Compare
函数进行排序。JSON本身就是文本,“排序”是没有意义的。但是我们可以对它的表示进行排序,即使是从一个JSON对象,如果这是一个已排序的关联容器。现在我有另一个与此相关的问题。我得到下面的错误“该类不符合密钥的键值编码”我在对象名中有空格,它在对象名中没有空格的情况下工作得很好,但是如果对象名中有空格,那么它会给我错误。示例:对象名为“BrandName”,然后开始工作,对象名为“BrandName”,开始给我错误“这个类不符合关键品牌名的键值编码”。首先,转到json.org学习json语法,至少足够好,这样在复制/粘贴示例时不会忽略关键字符。我解决了这个问题。我无法放置我的实际JSON对象。现在我有另一个与此相关的问题。我得到下面的错误“该类不符合密钥的键值编码”我在对象名中有空格,它在对象名中没有空格的情况下工作得很好,但是如果对象名中有空格,那么它会给我错误。示例:对象名为“BrandName”,然后开始工作,对象名为“BrandName”,开始给我错误“该类不符合关键品牌名的键值编码”。对此有帮助吗?
// grab json object here, which in your case returns a dictionary
NSDictionary *json = [NSJSONSerialization
JSONObjectWithData:data // where data is simply your json above, for example
options:kNilOptions
error:&error];
NSDictionary *colors = [json valueForKey:@"Colors"]; // gives you a handle on the whole json blob of Colors
NSLog(@"R: %@", [[colors valueForKey:@"Red"] valueForKey:@"R"]); // this gets the R value for Red
NSLog(@"G: %@", [[colors valueForKey:@"Green"] valueForKey:@"R"]); // this gets the R value for Green
NSLog(@"B: %@" [[colors valueForKey:@"Blue" valueForKey:@"R"]); // this gets the R value for Blue