Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS中对JSON对象排序_Ios_Json - Fatal编程技术网

在iOS中对JSON对象排序

在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,

我想在iOS中按“R”、“G”、“B”排序。在非“浅”RGB和“暗”RGB上排序

如何对JSON对象进行排序?请帮帮我

我能对“R”、“G”、“B”进行排序。但物体“红”、“绿”、“蓝”的排列顺序不对

“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