| 「反序列化大小写不敏感」 |
区分大小写 |
PropertyNameCaseInsensitive = true |
ASP.NET Core默认已开启此选项。 |
| 「驼峰命名策略」 |
PascalCase (与C#属性名一致) |
PropertyNamingPolicy = JsonNamingPolicy.CamelCase |
ASP.NET Core默认已开启此选项。 |
| 「忽略JSON注释」 |
抛出异常 |
ReadCommentHandling = JsonCommentHandling.Skip |
|
| 「忽略尾随逗号」 |
抛出异常 |
AllowTrailingCommas = true |
|
| 「序列化时忽略null值」 |
包含null值 |
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull |
|
| 「反序列化带引号的数字」 |
抛出异常 |
NumberHandling = JsonNumberHandling.AllowReadingFromString |
例如,将"123"反序列化为int类型。 |
| 「处理循环引用」 |
抛出异常 |
ReferenceHandler = ReferenceHandler.IgnoreCycles |
IgnoreCycles将循环点置为null,是API场景的常用选择。 |
| 「枚举序列化为字符串」 |
序列化为数字 |
添加 new JsonStringEnumConverter() 到 Converters 集合 |
Newtonsoft.Json中也有类似的StringEnumConverter。 |
| 「中文字符转义」 |
转义非ASCII字符 |
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping |
适用于API和AI交互,减少Token消耗。 |
「动态操作JSON (JObject)」 |
JsonDocument (只读) |
使用 「JsonNode」 / 「JsonObject」 / 「JsonArray」 |
.NET 6及以后版本可用,功能对标JObject。 |