服务器返回的json字符串,客户端解析为毛带转义字符“/”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器返回的json字符串,客户端解析为毛带转义字符“/”相关的知识,希望对你有一定的参考价值。

参考技术A 返回的数据是否有转义符? 客户端解析后 直接var obj = eval("("+jsonStr+")"); 可以吗?

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

【中文标题】从 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数据解析出错应该怎么办?

C#网络请求与JSON解析

由于BOM头导致的Json解析出错

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

当后台返回的json数据里有h5字符串该如何显示

如何解析json字符串及返回json数据到前端