我在我的应用程序中使用 JSON 解析。 我的问题是,当我从服务器获取响应字符串时,我通过 JSON 解析器和字典中的数据解析该字符串。解析进行得很好,但是顺序没有得到维护,这意味着当我的字符串出现时,它首先具有“学习中文”值,但是当解析该字符串并将数据放入字典时,它不会出现在第一个元素上。
我想用我的示例代码来解释这一点: 我要解析的字符串:
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: order of json array
关于iphone - json 解析返回的数据顺序与 json 字符串不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8501177/