引用符が含まれている JSON の解析で奇妙な小さな問題が発生しています。これを行うために、ネイティブの JSON.stringify および JSON.parse 関数を使用しています。引用符を含むオブジェクトを文字列化すると、期待どおりにエスケープされます。これを解析してオブジェクトに戻すと、再び正常に動作します。
問題は、文字列化してオブジェクトをページに出力し、結果の文字列を解析する場所で発生しています。これを行おうとすると、stringify が問題のある各引用符の前に単一のスラッシュしか置かないため、解析関数は失敗します。
これを達成する必要がある理由は、JSON 文字列としてデータベースに格納されたコンテンツを動的にロードするアプリケーションに取り組んでいるためです。JavaScriptが文字列を見つけて、その内容に基づいてページを構築できるように、ある時点で文字列をページのどこかに印刷する必要があります。ユーザーが間違った文字を入力しても失敗しないように、文字列との間でオブジェクトを確実に渡す方法が必要です!
今のところ、replace 呼び出しで余分なスラッシュをコードに挿入することでこれを解決できますが、これを処理するためのより良い方法があるかどうか疑問に思っていました。
私が説明しようとしていることを説明するために、いくつかの jsfiddles をまとめました。
http://jsfiddle.net/qwUAJ/ (文字列化して解析する)
var ob = {};
ob["number1"] = 'Number "1"';
ob["number2"] = 'Number 2';
ob["number3"] = 'Number 3';
var string = JSON.stringify(ob);
var reOb = JSON.parse('{"number1":"Number \"1\"","number2":"Number 2","number3":"Number 3"}');
$('div').html(string);
http://jsfiddle.net/a3gBf/4/ (文字列化して出力し、解析して戻す)
// Make an object
var ob = {};
ob["number1"] = 'Number "1"';
ob["number2"] = 'Number 2';
ob["number3"] = 'Number 3';
// Turn the object into a JSON string
var string = JSON.stringify(ob);
// Printing the string outputs
// {"number1":"Number \"1\"","number2":"Number 2","number3":"Number 3"}
$('.stringified').html(string);
// Attempt to turn the printed string back into an object
var reOb = JSON.parse('{"number1":"Number \"1\"","number2":"Number 2","number3":"Number 3"}');
// This fails due to the single escaped quote marks.
事前に助けてくれてありがとう!