2

テキストフィールドを使用して大きなテキスト入力を許可するWebアプリがあります。このテキストはデータベースに保存され、後でJSON応答のフィールドとしてユーザーに返送されます。Objectブラウザでは、単純にusingに変換しようとしJSON.parseますが、ユーザーがフィールドに入力した内容によっては失敗することがあります。

今のところ、テキストには一重引用符が含まれていると思います。引用符は、呼び出す前にブラウザー側のJavascriptを壊してJSON.parseいます。

Objectこのデータをサニタイズして、理想的には、保存後に最小限のクレンジングで解析して戻すことができるようにするための最良の方法は何ですか?

4

2 に答える 2

5

これはサニタイズの問題ではありません。引用符付きの文字列をJSONに入れることができます。エンコーディングは、引用符をエスケープするだけです。

あなたの問題はエンコーディングの問題です。ブラウザでJSON文字列を作成するには、JSON.stringifyを使用します。サーバー側でそれを行うには、(言及されていない)サーバー側の言語/フレームワークによって提供されるツールを使用する必要があります。

于 2013-01-02T16:47:47.070 に答える
2

JSONのすばらしい点は、何もサニタイズする必要がないことです。JSONエンコーダーに何をフィードしても、常にプレーンJSONが出力されます。明らかに、JSONをHTMLページ内で使用する場合は、JSONをHTMLでエンコードする必要があります。JSエンコーダーによっては、そこにないことを確認する必要があります(たとえば、に</script>置き換えるなど)。/\/

また、必要はありませんJSON.parse。JSONはJavaScriptのサブセットであるため、次のようなことができます(簡単にするためにPHP風)。

<script>
    var obj = <?= json_encode($whatever) ?>;
</script>

本当にJSONをJSON内のトリングとして含めたい場合は、それを行わないことを検討してください。オブジェクト自体をそこに置くことができます。JSONデータ内にJSON文字列を含める必要はありません。しかし、とにかくこれを持っているなら、それは常にうまくいくはずです。

于 2013-01-02T16:48:13.090 に答える