2011-10-20 4 views
0

私は、json経由でphpに渡される入力ボックスに二重引用符を入れると、json_decodeがnullを返すことに気付きました。したがって、私は二重引用符を\"に置き換えることにしました。str.replaceで良いjsonを作る

このように、私のようなものがあります:何かを壊すことなく

Hello hi "" " " " ' ' '' ' ' ' """ 

var valueToSet = input.replace(/"/gi, '\\"'); 

上記のコードは\"""を置き換え...これは動作しますが、今私は入力のものをすることができますように。しかし、私が次のように入力した場合:

Hello hi "" \ " 

これは壊れてしまいます。スラッシュも置き換えられる上記の置換にどのように含めることができますか?スラッシュを何に置き換えるべきですか? \\

ありがとうございます!

答えて

2

これらの問題については心配しないでください。自分のJSONを手作業でビルドしていると思いますが、そのための詳細を担当する専用の関数を使用する必要があります。

  • YUI JavaScriptライブラリは、すべてのブラウザで動作しますJSON.stringify方法でJSON objectがあり、存在する場合、ネイティブ実装を使用します。
  • 新しいブラウザがJSON.stringify実装(バージョン8.0からIEを、Firefoxはバージョン3.5から、バージョン4.0から、Safariのバージョン4.0から、オペラバージョン10.5からクローム)
  • ダグラス・クロックフォードは、サーバー側でJSON library
  • を書いています、PHPは、他のサーバー側の言語のサポートがあり、あなたの最後の質問に答えるために詳細

ためjson.orgを参照してくださいjson_encode

  • を持って、はい、\はに置き換えてくださいですが、再度json_encodeで行う必要があります。

  • +0

    あなたが正しいので+1しました。手動で構築するのではなく、実際にはエンコード機能を使用する必要があります。しかし、あなたは彼にPHPの答えを与えてくれました。彼はPHPでそれを行う方法については問いません。 – Spudley

    +0

    @ Spudley、私の答えを編集し、luquitaがおそらくJSでJSONを構築しているので、あなたに+1を与えました。乾杯 – stivlo

    2

    JavascriptでJSON文字列を作成するには、通常、JSONに変換したい配列またはオブジェクトを作成してから、stringify()メソッドを実行します。例えば

    var myData = {....some stuff here....}; 
    var myJSON = JSON.stringify(myData); 
    

    は、詳細はjson.orgで、このページを参照してください:

    http://www.json.org/js.htmlしかし、JSON文字列化と解析機能は、すべてのブラウザでは利用できないことに注意してください。古いブラウザをサポートする必要がある場合は、ライブラリを使用してこの機能を追加する必要があります。 jQueryなどのライブラリにはJSONエンコーディング機能が含まれており、スタンドアロンのJSONライブラリも利用できます。

    関連する問題