【问题标题】:How to use special characters in JSON stringify?如何在 JSON 字符串化中使用特殊字符?
【发布时间】:2016-03-30 22:32:21
【问题描述】:

我正在尝试对我的 json 代码进行字符串化以将其发送到 MVC 控制器。 但当数据中包含大于 > 或小于号 <.> 之类的特殊字符时,它就不起作用了

这里是示例代码

 function demo()
 {
     debugger
     var demo = [];
     demo.one = 'one';
     demo.two = '<just>'
     var treeBinding = JSON.stringify(demo);
     $.ajax({
         url: '/flow/demo',
         type: "GET",
         data: { dd: treeBinding },
         success: function (res) {

         },
         error: function (error) {
             alert(error)
         }
     });
 }

JSON.stringify 在这种情况下返回一个空白数组。 谁能帮我搞定它?

【问题讨论】:

  • 数组不应该这样使用。您要么需要像 [0][1] 这样的数字索引,要么使用对象而不是像 {} 这样的数组。
  • var demo = { "one": "one", "two": "&lt;just&gt;" };
  • 您正在创建数组。你不能直接赋值。您需要推送元素
  • stringify 通过在数组中使用 { } 开始工作,但数据仍然没有进入控制器。

标签: javascript c# json ajax asp.net-mvc


【解决方案1】:

首先,您对数组的声明不正确。这应该是一个对象,但无论如何您都需要检查对象和数组之间的区别。但是我假设演示是一个具有两个键/属性的对象,它们将被发送到服务器。

所以声明应该是这样的-

     var demo = {};
     demo.one = 'one';
     demo.two = '<just>';

那你应该使用转义-

var treeBinding = encodeURIComponent(JSON.stringify(demo));

【讨论】:

    【解决方案2】:

    你可以试试这样的:

    function arrayToObjectString(arr) {
      var returnSrt = "{";
      for (var key in arr) {
        returnSrt += "\"" + key + "\" : \"" + arr[key] + "\"";
        returnSrt += ","
      }
      returnSrt = returnSrt.substring(0, returnSrt.length - 1) + "}";
    
      return returnSrt;
    }
    
    function main() {
      var demo = [];
      demo.one = 'one';
      demo.two = '<just>'
    
      console.log(JSON.stringify(demo))
    
      var resultStr = arrayToObjectString(demo);
      
      console.log(resultStr)
      console.log(JSON.parse(resultStr));
    }
    
    main();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多