[英]Ordering of data returning from json parsing not same as json string
我在应用程序中使用JSON解析。 我的问题是,当我从服务器获取响应字符串时,我通过JSON解析器和字典中的数据解析了该字符串。 解析可以很好地进行,但是排序没有得到维护,这意味着当我的字符串到达时它首先具有“ Learning Chinese”值,但是在将其解析并将数据放入字典中时却没有出现在第一个元素上。
我想用我的示例代码来解释这一点:我想解析的字符串:
NSString *respStr = [req responseString];
NSLog(@"respStr=%@",respStr);
{
"Learning Chinese": [
{
"title": "Chinese nga28Traditionalnga27 Audio FlashCards for iPad",
"function_name": "Learning Chinese"
},
{
"title": "WCC Chinese Flashcards nga28Bigramnga27 with Audio",
"function_name": "Learning Chinese"
}
],
"Business & Office": [
{
"title": "Instant Customer",
"function_name": "Business & Office"
},
{
"title": "Phone Swipe nga7 Credit Card Terminal",
"function_name": "Business & Office"
}
],
"Kids": [
{
"title": "iWriteWords nga28Handwriting Gamenga27",
"function_name": "Kids"
},
{
"title": "SoundBook nga25 audio flashcards for toddlers",
"function_name": "Kids"
}
],
"Christmas": [
{
"title": "Santanga2s Fun",
"function_name": "Christmas"
},
{
"title": "Santerrific",
"function_name": "Christmas"
}
]
}
现在
NSMutableDictionary *dict=[respStr JSONValue];
NSLog(@"dict=%@",dict);
我有:
dict={
"Business & Office" = (
{
"function_name" = "Business & Office";
title = "Instant Customer";
},
{
"function_name" = "Business & Office";
title = "Phone Swipe nga7 Credit Card Terminal";
}
);
Christmas = (
{
"function_name" = Christmas;
title = "Santanga2s Fun";
},
{
"function_name" = Christmas;
title = Santerrific;
}
);
Kids = (
{
"function_name" = Kids;
title = "iWriteWords nga28Handwriting Gamenga27";
},
{
"function_name" = Kids;
title = "SoundBook nga25 audio flashcards for toddlers";
}
);
"Learning Chinese" = (
{
"function_name" = "Learning Chinese";
title = "Chinese nga28Traditionalnga27 Audio FlashCards for iPad";
},
{
"function_name" = "Learning Chinese";
title = "WCC Chinese Flashcards nga28Bigramnga27 with Audio";
}
);
}
之后:
NSLog(@"[dict allKeys]=%@",[dict allKeys]);
[dict allKeys]=(
Christmas,
Kids,
"Learning Chinese",
"Business & Office"
)
从代码中可以清楚地看出,在字符串“ Learning Chinese
是第一位的,而在字典中则是4位,而在执行allKeys
它是3位。
请告诉任何人为什么会发生这种情况,告诉我或以其他方式解决。对我来说,排序是必需的。我必须以与从服务器返回的字符串相同的顺序显示数据。
任何建议将不胜感激。
提前致谢。
您必须知道NSDictionary / NSMutableDictionary中的键没有排序。 为了解决这个问题,您可以使用数组,也可以在代码中自己对数组进行排序。
您的问题与此非常相似: Objective-C SBJSON:json数组的顺序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.