Ich habe ein Problem mit JSON-Strings hin und her zwischen PHP und Javascript Ajax Anrufe. Die PHP-Routinen senden JSON codierte Strings ohne Anführungszeichen um den Gleitkommazahlen, dhCompound Ersetzen von Fließkommazahl durch doppelte Anführungszeichen
{"Route_1":[{"lat":-31.526107395574975,"lng":146.31591796875},{"lat":-31.51674215813217,"lng":145.5303955078125}]}}
Aber wenn die JSON-String von der Ajax-Routine empfangen wird, werden alle Gleitkommazahlen haben doppelte Anführungszeichen um sie wie hier gezeigt:
{"Route_1":[{"lat":"-31.526107395574975","lng":"146.31591796875"},{"lat":"-31.51674215813217","lng":"145.5303955078125"}]}
So nach ein paar Tagen versuchen, auf den Grund, es zu bekommen, ich habe die beste Vorgehensweise entschieden, gerade diese zu analysieren, die doppelten Anführungszeichen zu entfernen. Ich kann die Gleitkommazahlen identifizieren und .replace and callback verwenden. aber die Compound-Ersetzung funktioniert nicht so, wie ich es erwarten würde - das heißt, es gibt nur die gleiche Zeichenfolge zurück.
Kann jemand bitte etwas Licht darauf werfen? btw das ist nicht das gleiche Problem wie die Frage, 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);
Warum würden Sie Regex verwenden, wenn Sie ein perfekt servicable JSON haben Sie in ein Objekt konvertieren und dann manipulieren? – vlaz
Obwohl es tatsächlich scheint, dass _isnot_ gültige JSON ist. Wie auch immer, mein Punkt steht - Sie wollen Dinge mit JSON tun - wenn Sie einen haben, der gültig ist, sollten Sie ihn nicht neu schreiben müssen. – vlaz
Mögliches Duplikat von [Wie man ein JSONArray analysiert und in Javascript konvertiert] (http://stackoverflow.com/questions/39398091/how-to-parse-a-jsonarray-and-convert-in-javascript) – vlaz