从 json 解析返回的数据排序与 json 字符串不同
Posted
技术标签:
【中文标题】从 json 解析返回的数据排序与 json 字符串不同【英文标题】:Ordering of data returning from json parsing not same as json string 【发布时间】:2011-12-14 08:08:21 【问题描述】:我在我的应用程序中使用 JSON 解析。 我的问题是,当我从服务器获取响应字符串时,我通过 JSON Parser 和字典中的数据解析了该字符串。解析很顺利,但是顺序没有得到维护,这意味着当我的字符串出现时,它首先具有“学习中文”的值,但是当解析它并将数据输入字典时,它没有出现在第一个元素上。
我想用我的示例代码来解释这一点: 我要解析的字符串:
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 个数字。
如果有人知道为什么会发生这种情况,请告诉我或任何其他解决方法。排序对我来说是必要的。我必须以与从服务器返回的字符串相同的顺序显示我的数据。
任何建议都将受到高度赞赏。
提前致谢。
【问题讨论】:
在我看来,您返回的数据是按字母顺序列出的。 Objective-C SBJSON: order of json array 的可能重复项 【参考方案1】:你必须知道 NSDictionary/NSMutableDictionary 中的键是没有顺序的。要解决这个问题,您可以使用数组或在代码中自行排序。
您的问题与这个问题非常相似: Objective-C SBJSON: order of json array
【讨论】:
感谢 Rafal 的回答+1。是的,我也看到了你提到的那个问题,但它并没有解决我的问题。以上是关于从 json 解析返回的数据排序与 json 字符串不同的主要内容,如果未能解决你的问题,请参考以下文章