Я использую JSON Parsing в своем приложении. Моя проблема в том, что когда я получаю свой ответ String с сервера, я разбирал эту строку через JSON Parser и данные в моем словаре. Парсинг идет хорошо, но упорядочение не поддерживается, когда моя строка пришла, у него есть значение «Изучение китайского», но при анализе этого и получении данных в словаре тогда он не попал на первый элемент.Заказ данных, возвращаемых из 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 числа.
Пожалуйста, если кто-нибудь знает, почему это происходит, скажите мне или каким-либо другим способом его решения. Для меня необходимо сделать предварительный заказ. Мне нужно показать свои данные в том же порядке, что и в строке, возвращаемой с сервера.
Любые предложения будут высоко оценены.
Заранее спасибо.
смотрит на меня, как ваш возвращаемые данные в настоящее время перечислены в алфавитном порядке. –
Возможный дубликат [Objective-C SBJSON: порядок json-массива] (http://stackoverflow.com/questions/3758977/objective-c-sbjson-order-of-json-array) –