2017-05-02 3 views
0

json文字列値の一重引用符を¥ 'に置き換えようとしていますが、リプレイサ関数を使用しようとしても機能しません。JSON stringifyはリプレイサ関数を使用して一重引用符をエスケープできません

var myObj = { 
test: "'p'" 
} 

var replacer = function (key, value) { 
       if (typeof value === 'string') 
        return value.replace(/'/g, "\\'"); 
       else return value; 
      }; 

    var JSONstring = JSON.stringify(myObj, replacer, ' '); 

    alert(JSONstring); 

https://jsfiddle.net/4fsqozek/1/

ただし、文字列が

var JSONstring = JSON.stringify(myObj).replace(/'/g, "\\'"); 

私は細かい作品を使用する正規表現を代用機能を使用せずに、次のように作成された後、私はただ単純な置き換えない場合。

EDIT - 明確化 - 使用して代用関数の出力値は、誰もがこれを説明することができ、私は

を期待していものではありません。この\\「のp \\」、のような二重のバックスラッシュが含まれていますか?

答えて

2

JSON.stringifyはあなたがデコードれるように、単一の\しかし\\

なりますJSONをエンコードされた文字列にバックスラッシュを挿入しようとしてバックスラッシュ

How do I retain backslashes in strings when using JSON.stringify?

を参照してくださいコード化 JSONの二重バックスラッシュ\\は、\の1つにデコードされますあなたが望む結果に終わるだろうと思う)。

あなたはあなたの正確なコードを維持して、最後にあなたが

alert(JSON.parse(JSONstring).test); 

alert(...)を交換する場合は、それが文字列化される前の値を代用品に渡され

\'p\' 
+0

それはすべて私は問題ではありませんでした内側た文字列 – erotavlas

+0

のように扱われていたものと思っ二重引用符の内側に包まれていたので、私は、私は無効なJSONの結果んしようとしていたものを実現していませんでした@ erotavlasはい、私は言及していませんでしたが、実際には、強制的に1つのバックスラッシュを含むJSONはJSON仕様に準拠していませんでした。 – Paolo

関連する問題