2016-09-27 6 views
2

PHPとJavaScriptのAjax呼び出しの間を行き来するJSON文字列に問題があります。 PHPのルーチンは、すなわち浮動小数点数の二重引用符での置換

{"Route_1":[{"lat":-31.526107395574975,"lng":146.31591796875},{"lat":-31.51674215813217,"lng":145.5303955078125}]}} 

、浮動小数点数の前後に引用符なしでJSONエンコードされた文字列を送信している。しかし、JSON文字列がAjaxのルーチンによって受信されたときに、ここで示したように、すべての浮動小数点数は、それらの周りに二重引用符を持っています:

{"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);

+2

あなたがオブジェクトに変換し、操作することができ、完全servicable JSONを持っているのに、なぜあなたは正規表現を使うのでしょうか? – vlaz

+0

実際には有効なJSONではないようですが。しかし、私の言いたいことは、JSONを使ってやりたいことです。有効なものがあれば、それを正規表現する必要はありません。 – vlaz

+2

[JSONArrayを解析してJavaScriptで変換する方法]の可能な複製(http://stackoverflow.com/questions/39398091/how-to-parse-a-jsonarray-and-convert-in-javascript) – vlaz

答えて

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

+1

1.正規表現はここで仕事のための正しいツールであると私は反対します。 2.それでも正しいJSONではありません。 – vlaz

+0

JSONのエラーでご迷惑をおかけして申し訳ありません。私は上記のそれを修正します。クライアントから送信されたJSON文字列をテストしていたときに構文エラーが発生しました。それが問題の原因かどうかを確認するために二重引用符を使用していました。正しいJSONが表示されます。ありがとう – TrueBlue

関連する問題