我遇到了在PHP和javascript Ajax调用之间来回流动的JSON字符串的问题。 PHP例程在浮点数周围发送JSON编码的字符串,但没有引号,即
{"Route_1":[{"lat":-31.526107395574975,"lng":146.31591796875},{"lat":-31.51674215813217,"lng":145.5303955078125}]}}
但是当ajax例程接收到JSON字符串时,所有浮点数都有双引号,如下所示:
{"Route_1":[{"lat":"-31.526107395574975","lng":"146.31591796875"},{"lat":"-31.51674215813217","lng":"145.5303955078125"}]}
因此,经过几天试图找到它的底部,我已经决定最好的行动方案是解析这个以删除双引号。我可以识别浮点数并使用.replace and callback。但是复合替换不能像我期望的那样工作 - 也就是说它只返回相同的字符串。
有人可以对此有所了解吗?顺便说一句,这与提出how to parse a JSON string.
的问题不同
var str = '{"Route_1":[{"lat":"-31.526107395574975","lng":"146.31591796875"},{"lat":"-31.51674215813217","lng":"145.5303955078125"}]}'
var regex = /[-+]?[0-9]*\.?[0-9]+/g;
var t = str.replace(regex, function(x) {
return x.replace(/"/g, "");
})
console.log(t);

答案 0 :(得分:2)
您需要在正则表达式中匹配"
。请查看以下更新。
var str = '{"Route_1":[{"lat":"-31.526107395574975","lng":"146.31591796875"},{"lat":"-31.51674215813217","lng":"145.5303955078125"}]}';
var regex = /\"[-+]?[0-9]*\.?[0-9]+\"/g;
var t = str.replace(regex, function(x) {
return x.replace(/"/g, "");
})
console.log(t);