繁体   English   中英

从json解析返回的数据顺序与json字符串不同

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM