HTML ファイルに含める方向の JSON を生成しているため、JSON は Javascript 文字列にラップされます。
例えば
var dataContacts =
'{"Contacts":[{"Id":0,"Active":false,"Company":"Rory The Architect\\, Melt"}]}';
var contacts = $.parseJSON(dataContacts).Contacts;
このコードは JavaScript で失敗するはずです。
var dataContacts =
'{"Contacts":[{"Id":0,"Active":false,"Company":"Rory The Architect\\\\, Melt"}]}';
var contacts = $.parseJSON(dataContacts).Contacts;
私は .NET Serializer と NewtonSoft.Json の両方を使用しましたが、どちらも \ を \\\\ に変換することをサポートしていません。もちろん、\ を \\ に変換します。これは JSON の AJAX 配信には適していますが、JSON には適していません。 Javascript 文字列に埋め込まれています
ある種の myJson.Replace("\", "\\"); を実行する必要があるかもしれないと思います。
出力に \\ が必要な理由を調べました。次のリンクを参照してください。
jQuery JSON パーサーでバックスラッシュを二重にエスケープする必要があるのはなぜですか?
最初のエスケープは、Javascript 文字列リテラルでエスケープします。2 番目のエスケープは、JSON 文字列リテラルでエスケープします。
Javascript 式 '{"a":"b:\c"}' は、文字列 '{"a":"b:\c"}' に評価されます。この文字列には、エスケープされていない \ が 1 つ含まれており、JSON ではエスケープする必要があります。\ を含む文字列を取得するには、各 \ を Javascript 式でエスケープする必要があり、"\\" になります。
この問題の最善の道と、なぜ NewtonSoft も .NET シリアライザーも JSON をエンコードして Javascript ファイルに直接含めることをサポートしていないのか疑問に思っています。