2011-12-09 21 views
1

Im JavaScriptSerializerクラスを使用してJsonに/から消滅させてDeserilizeする。Json JavaScriptSerializerクラスを使用してエスケープしますか?

I knowそこにはjson.netライブラリがあります。

しかし、私の質問は:

私も私のJSON文字列をエスケープするJavaScriptSerializerクラスを使用することはできますか?

または自分で行う必要がありますか?もしそうなら、私はencodeURIComponentでそれをするべきですか?

答えて

5

はい、安全に文字列を符号化する適切な方法です。あなたの文字列でserializeを呼び出すだけです。

private static void SerializeString(string input, StringBuilder sb) 
{ 
    sb.Append('"'); 
    sb.Append(HttpUtility.JavaScriptStringEncode(input)); 
    sb.Append('"'); 
} 

だから私は別の答えはあなたのことです推測:あなたは、実際のJavaScriptSerializerの実装(私はdotpeekを使用しています)に見れば、あなたはそれが実際にこの関数を呼び出すことがわかります、より明確にする

HttpUtility.JavaScriptStringEncodeを使用することができますが、二重引用符は付けません。

+0

ちょうど私が必要なもの!オプションで外側の二重引用符を追加する余分な引数をとるオーバーロードがあります。 –

0

質問に対する回答は、jsonの使用方法によって異なります。

ajax呼び出しで送信している場合は、おそらく文字列で何もする必要はありません。

結果のjsonをcodebehindのjavascript変数に埋め込む場合は、jsが正しくフォーマットされていることを確認するために最小限のエスケープが必要です。これは、私たちがこのために使用するものです。

sJsonString = sJsonString.Replace("\r\n", "\\r\\n") 

(申し訳ありませんが、それは、VBのコードで、C#のためのいくつかの調整が必要な場合があります)

私は、これは適切なC#のコードであってもよいと思う:

sJsonString = sJsonString.Replace("\\r\\n", "\\\\r\\\\n"); 
+0

しかし、二重引用符をエスケープすることを忘れないでください! –

関連する問題