如何在JSON字符串中使用特殊字符

本文关键字:特殊字符 字符串 JSON | 更新日期: 2023-09-27 18:27:54

我正在尝试字符串化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返回一个空白数组。有人能帮我把它修好吗?

如何在JSON字符串中使用特殊字符

首先,使用数组的声明是不正确的。这应该是一个对象,但无论在什么情况下,都需要检查对象和数组之间的区别。然而,我假设demo是一个具有两个密钥/属性的对象,它们将被发送到服务器。

所以声明应该是这样的-

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

然后你应该使用逃跑-

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

您可以尝试以下操作:

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();