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