我有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个错误请求。
答案 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完全按照您的要求进行转义。