【发布时间】:2018-04-17 19:53:24
【问题描述】:
我不得不使用 JSON.NET 执行一些自定义反序列化,我刚刚发现它将 JToken 中的键值视为区分大小写。这是一些代码:
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JToken token = JToken.Load(reader);
JToken version = token["version"];
string ver = version.ToObject<string>();
return new MyVersion(ver);
}
version 变量为 null,即使 json 包含顶层的版本元素,它只是大写:
{
"VERSION" : "1.0",
"NAME" : "john smith"
}
有什么方法可以将JToken 与不区分大小写的键一起使用?或者可能是另一种没有JToken 的方法,可以让我抓取和反序列化单个属性?
编辑:
基于我最终这样做的 cmets:
JObject token = JObject.Load(reader);
string version = token.GetValue("version", StringComparison.OrdinalIgnoreCase).ToObject<string>(serializer);
【问题讨论】:
-
是的,他们是。但请参阅JSON.NET JObject key comparison case-insensitive 了解解决方法。