Csharp/C#教程:Json.NET不区分大小写的属性反序列化分享


Json.NET不区分大小写的属性反序列化

Json.NET将“不区分大小写的属性反序列化”列为广告function之一。 我已经读过,将首先尝试匹配指定属性的大小写,如果未找到匹配项,则执行不区分大小写的搜索。 但这似乎不是默认行为。 请参阅以下示例:

var result = JsonConvert.DeserializeObject<KeyValuePair>( "{key: 123, value: "test value"}" ); // result is equal to: default(KeyValuePair) 

如果更改JSON字符串以匹配属性的情况(“Key”和“Value”vs“key”和“value”),那么一切都很好:

 var result = JsonConvert.DeserializeObject<KeyValuePair>( "{Key: 123, Value: "test value"}" ); // result is equal to: new KeyValuePair(123, "test value") 

有没有办法执行不区分大小写的反序列化?

这是一个错误。

不区分大小写的属性反序列化是指Json.NET能够将名为“Key”的JSON属性映射到.NET类的“Key”或“key”成员。

错误是KeyValuePair需要自己的JsonConverter但是错过了不区分大小写的映射。

https://github.com/JamesNK/Newtonsoft.Json/blob/fe200fbaeb5bad3852812db1e964473e1f881d93/Src/Newtonsoft.Json/Converters/KeyValuePairConverter.cs

使用它作为基础,并在读取JSON时将小写“key”和“value”添加到case语句。

我找到的一种有效方法是使用带有StringComparer参数的GetValue。

例如,

 JObject contact; String strName = contact.GetValue('Name'); 

您正在尝试访问“名称”属性,因为不区分大小写,您可以使用

上述就是C#学习教程:Json.NET不区分大小写的属性反序列化分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 JObject contact; String strName = contact.GetValue("ObjType", StringComparison.InvariantCultureIgnoreCase); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1000199.html

(0)
上一篇 2021年12月27日
下一篇 2021年12月27日

精彩推荐