加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:47:07 所属栏目:百科 来源:网络整理
导读:Json.NET列出了“不区分大小写的属性反序列化”作为广告的功能之一。我已经阅读,首先将尝试匹配指定的属性的情况,如果找不到匹配,执行不区分大小写的搜索。然而,这似乎不是默认行为。请参见以下示例: var result = JsonConvert.DeserializeObjectKeyVal
Json.NET列出了“不区分大小写的属性反序列化”作为广告的功能之一。我已经阅读,首先将尝试匹配指定的属性的情况,如果找不到匹配,执行不区分大小写的搜索。然而,这似乎不是默认行为。请参见以下示例:
var result =
    JsonConvert.DeserializeObject<KeyValuePair<int,string>>(
        "{key: 123,value: "test value"}"
    );

// result is equal to: default(KeyValuePair<int,string>)

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

var result =
    JsonConvert.DeserializeObject<KeyValuePair<int,string>>(
        "{Key: 123,Value: "test value"}"
    );

// result is equal to: new KeyValuePair<int,string>(123,"test value")

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

这是一个错误。

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

这个bug是KeyValuePair需要自己的JsonConverter,但是缺少了大小写不敏感的映射。

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读