回答編集履歴

4

訂正

2022/08/19 21:53

投稿

退会済みユーザー
test CHANGED
@@ -64,7 +64,7 @@
64
64
 
65
65
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-08-11/c7832102-965a-427f-9cb5-7ac0d260471f.jpeg)
66
66
 
67
- なお、上の方法でエスケープしないようにできるのは BMP(Basic Multilingual Plane・・・U+0000 から U+FFFF の範囲)の文字だけです。BMP の文字でもエスケープできないものもあります。詳しくは以下の記事を見てください。
67
+ なお、上の方法でエスケープしないようにできるのは BMP(Basic Multilingual Plane・・・U+0000 から U+FFFF の範囲)の文字だけです。BMP の文字でもエスケープ解除できないものもあります。詳しくは以下の記事を見てください。
68
68
 
69
69
  ASP.NET Core MVC の Unicode Escape Sequence (UES)
70
70
  http://surferonwww.info/BlogEngine/post/2020/03/11/aspnet-core-mvc-controller-json-method-replaces-non-ascii-characters-with-5cuxxxx.aspx

3

追記&訂正

2022/08/11 01:36

投稿

退会済みユーザー
test CHANGED
@@ -1,6 +1,6 @@
1
1
  System.Text.Json の JsonSerializer が使えるのは .NET Core 3.0 以降で、それより前のフレームワーク (.NET Framework 4.8 を含む) では NuGet からのインストールが必要だそうですが、それはやりましたか?
2
2
 
3
- 質問者さんのコードをコピペして試してみましたが、System.Text.Json を NuGet からインストールしてあれば少なくも質問に書いてあるような例外は出ません。
3
+ 質問者さんのコードをコピペして試してみましたが、System.Text.Json を NuGet からインストールしてあれば少なくも質問に書いてあるような例外は出ません。
4
4
 
5
5
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-08-11/a9a14bbd-ab84-405a-b028-fd2dea3d76bc.jpeg)
6
6
 

2

追記

2022/08/11 01:28

投稿

退会済みユーザー
test CHANGED
@@ -42,3 +42,30 @@
42
42
  結果は:
43
43
 
44
44
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-08-11/59111f0b-1efd-49f1-afd0-0f10ceb8bd01.jpeg)
45
+
46
+ ---
47
+
48
+ **【追記】**
49
+
50
+ 上の結果で日本語の部分が \uxxxx という形で表されるのは、シリアライザで Unicode Escape Sequence (以下 UES と書きます) という形にエスケープされた結果です。
51
+
52
+ セキュリティ対策のようで、そのままでもその JSON 文字列を使う側は問題なく解釈してくれると思いますが、どうしても読めないとイヤだという場合は以下のように JsonSerializerOptions の設定でエスケープしないようにできます。
53
+
54
+ ```
55
+ var option = new JsonSerializerOptions
56
+ {
57
+ Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
58
+ };
59
+
60
+ var json_str = JsonSerializer.Serialize(gil, option);
61
+ ```
62
+
63
+ 結果は:
64
+
65
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-08-11/c7832102-965a-427f-9cb5-7ac0d260471f.jpeg)
66
+
67
+ なお、上の方法でエスケープしないようにできるのは BMP(Basic Multilingual Plane・・・U+0000 から U+FFFF の範囲)の文字だけです。BMP の文字でもエスケープできないものもあります。詳しくは以下の記事を見てください。
68
+
69
+ ASP.NET Core MVC の Unicode Escape Sequence (UES)
70
+ http://surferonwww.info/BlogEngine/post/2020/03/11/aspnet-core-mvc-controller-json-method-replaces-non-ascii-characters-with-5cuxxxx.aspx
71
+

1

訂正

2022/08/11 01:09

投稿

退会済みユーザー
test CHANGED
@@ -1,6 +1,6 @@
1
1
  System.Text.Json の JsonSerializer が使えるのは .NET Core 3.0 以降で、それより前のフレームワーク (.NET Framework 4.8 を含む) では NuGet からのインストールが必要だそうですが、それはやりましたか?
2
2
 
3
- 質問者さんのコードをコピペして試してみましたが、System.Text.Json を NuGet からインストールしてあれば少なくのも質問に書いてあるような例外は出ません。
3
+ 質問者さんのコードをコピペして試してみましたが、System.Text.Json を NuGet からインストールしてあれば少なくのも質問に書いてあるような例外は出ません。
4
4
 
5
5
  ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-08-11/a9a14bbd-ab84-405a-b028-fd2dea3d76bc.jpeg)
6
6