如何使用backwordslash转换JSON

时间:2015-01-11 10:10:13

标签: json serialization

我有JSON喜欢这个

var myVariable=[{"items": "SOFT TOUCH AVOCADO 125 ML x 6D","descriptions": "100mg","umo": "CTN","qty": 1,"price": 0,"lineamount": 0,"customerid": "ANG001","tdate": "11:0:2015","orderId": "Himansu12:9:707","bookorder": "ABCANG00197","FOC": 1}];

但我们需要像这样的JSON

 var stringtwo ="[{\"items\": 19760,\"descriptions\": 7,\"umo\": 18377,\"qty\":8,\"price\":8,\"lineamount\": \"22\" ,\"customerid\": 1960,\"tdate\": 7,\"orderId\": 1377,\"bookorder\":7,\"FOC\":7 }]";

所以请任何人指导我如何将JSON(myVaiable)转换为JSON(stringtwo)。我们尝试将数据发送到服务器。 Web服务由.NET开发。所以我们需要POST JSON(stringtwo)。但我们得到JSON(myVaiable)。

$.ajax({
            url:'http://183.82.0.221:1234/MyService.svc/PostOrderData/'+stringone+','+stringtwo+'',
            dataType:'jsonp',
            type:'get',
            cache:false,
            timeout: 2000,
            error: function(x, t, m) {
        if(t=="timeout") {
            alert("this app need internet connection so Please connect net first ");

        } else {
            //alert(t);
        }},
          success:function(data) {
                debugger;
    alert(data);
    console.log(data);
    },
});

我们尝试将JSON数据发布到Server.but我们得到了400个错误请求。

3 个答案:

答案 0 :(得分:1)

您只想序列化JSON字符串。详细了解JSON in mozilla

所以请使用JSON.stringify之类的

var stringtwo = JSON.stringify(myVariable)

(顺便说一下,你缺少一个 Javascript 标签)

请注意,你可以多次使用它(但我猜不出你想要这样做的原因),例如

var stringthree = JSON.stringify(stringtwo)

甚至可能

var stringfour = JSON.stringify(stringthree)

您可以稍后致电jquery.ajax,如

$.ajax({ url: "http://some.url/goes/here",
         type: 'POST',
         data: stringfour, // but more probably stringtwo or stringthree
         success: function (gotdata) {
         }
         /// etc
       })

另请阅读string literals& code injection

答案 1 :(得分:1)

将对象序列化为JSON字符串,并将"替换为\"

// SiwachGaurav's version from http://stackoverflow.com/questions/1144783/replacing-all-occurrences-of-a-string-in-javascript
function stringReplaceAll(str, find, replace) {
    return str.replace(new RegExp(find.replace(/[-\/\\^$*+?.()|[\]{}]/g,'\\$&'),'g'),replace);
}

var myVariable = [{"items": "SOFT TOUCH AVOCADO 125 ML x 6D","descriptions": "100mg","umo": "CTN","qty": 1,"price": 0,"lineamount": 0,"customerid": "ANG001","tdate": "11:0:2015","orderId": "Himansu12:9:707","bookorder": "ABCANG00197","FOC": 1}];

var stringtwo = stringReplaceAll(JSON.stringify(myVariable), '\"', '\\"');

// stringtwo becomes "[{\"items\":\"SOFT TOUCH AVOCADO 125 ML x 6D\",\"descriptions\":\"100mg\",\"umo\":\"CTN\",\"qty\":1,\"price\":0,\"lineamount\":0,\"customerid\":\"ANG001\",\"tdate\":\"11:0:2015\",\"orderId\":\"Himansu12:9:707\",\"bookorder\":\"ABCANG00197\",\"FOC\":1}]"

jsFiddle演示:http://jsfiddle.net/xmojmr/v6b5ma9n/1/

答案 2 :(得分:0)

这是我用来做你所要求的技巧(需要Intellij IDEA - 不确定Eclipse是否会这样做)。此外,假设这是一次性的,不是重复过程的一部分:

在任何Java文件中,执行以下操作:

String json "";

现在,将不包含反斜杠的JSON放在剪贴板上。将光标定位在引号之间。糊。瞧。您的JSON完全按照您的要求进行转义。