ホームページ  >  記事  >  ウェブフロントエンド  >  jsonのエスケープ文字とは何ですか

jsonのエスケープ文字とは何ですか

(*-*)浩
(*-*)浩オリジナル
2019-06-01 13:32:399379ブラウズ

エスケープ シーケンスは文字エンティティとも呼ばれます。 HTML では、エスケープ文字列を定義する理由は 2 つあります。 1 つ目の理由は、HTML タグを表すために「<」や「>」などの記号が使用されているため、テキスト内のテキストとして直接使用できないことです。 . 使用する記号。これらのシンボルを HTML ドキュメントで使用するには、エスケープ文字列を定義する必要があります。インタプリタはそのような文字列に遭遇すると、それを実際の文字として解釈します。エスケープ文字列を入力するときは、大文字と小文字の規則に厳密に従ってください。 2 番目の理由は、一部の文字が ASCII 文字セットで定義されていないため、エスケープ文字列で表す必要があるためです。

jsonのエスケープ文字とは何ですか

実際、すべてのプログラミング言語には基本的に 2 つの理由でエスケープ文字があります:

1. エスケープ文字を使用して表現します。 ASCll の制御文字や復帰文字、改行文字など、文字セットで定義された文字。これらの文字には既製のテキスト コードがありません。したがって、エスケープ文字でのみ表現できます。

2. 一部の特定の文字は、編集言語で特殊用途の文字として定義されています。

これらの文字は特別な目的のために定義されているため、本来の意味は失われています。たとえば、HTML では、< は HTML によってタグの開始として定義されているため、< に切り替えると、HTML はこれを < ではなく開始として扱います。もう 1 つの例は、PHP の二重引用符 (") です。これは PHP によって文字列の周辺タグとして定義されているため、二重引用符のペア内で二重引用符を使用したい場合は、エスケープ文字のみを使用できます。それ以外の場合、PHP はエラーを報告します。

上記のことから、エスケープは 2 つの状況にすぎないこともわかります:

1: 通常の文字を特殊な目的に変換します。プログラミング言語、戻るキー、エンターキーなど、直接表示できない文字を表すために使用されます

2: 特殊な意味を持つ文字を元の意味に変換するために使用され、通常は正規表現で使用されます。また、一部のスクリプト言語は型指定が弱いものもあります。HTML などの一部の言語はプログラミング言語ではなく、マークアップ言語です。シェル スクリプト言語など、型が 1 つしかない言語もあります。これらの言語では、文字列は引用符で囲まれません。 ""、または引用符なしでそのままにすることもできます。" " そのため、現時点での特定の文字の ID が特別な意味を持つメタ文字ではなく通常の文字であることを示すために文字をエスケープする必要がある場合があります。

さらに、Web サイトのセキュリティのため、データがデータベースに書き込まれる前に、一部の機密文字をエスケープするためにエスケープ文字 (関数) が使用されます。これにより、特別な記号を使用する下心のある人々によるインジェクション攻撃を回避できます。

JSon 文字列はシリアル化された後にファイルに保存されます。文字列を読み取るとき、JSON.parse() を使用して JSON オブジェクトに直接解析することはできません。これは文字列であり、正当な JSON オブジェクトではないためです。

たとえば、次のような JSON 文字列はファイルに保存され、読み取ったときに直接解析することはできません:

“{\"resourceId\":\"dfead70e4ec5c11e43514000ced0cdcaf\",\"properties\":{\"process_id\":\"process4\",\"name\":\"\",\"documentation\":\"\",\"processformtemplate\":\"\"}}"

この文字列がこのコードは、バックスラッシュはエスケープを意味するので問題ありませんが、このようにテキスト ファイルを直接読み込んだ場合、JSON.parse() で直接解析することはできません。逆シリアル化する必要があり、バックスラッシュはプログラマの中には、そのようなことを行うためのツール クラスを作成することを好む人もいますが、実際には、車輪の再発明を行わなくても、これを実行できる便利で高速なツールがあります。 .lang ツールキット (使用ツール クラス: org.apache.commons.lang.StringEscapeUtils)

例は次のとおりです:

public void test(){
	String str1 = "{\"resourceId\":\"dfead70e4ec5c11e43514000ced0cdcaf\",\"properties\":{\"process_id\":\"process4
	"+"\",\"name\":\"\",\"documentation\":\"\",\"processformtemplate\":\"\"}}";
	String tmp = StringEscapeUtils.unescapeJavaScript(str1);
	System.out.println("tmp:" + tmp);
}

出力:

そうです

以上がjsonのエスケープ文字とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。