簡體   English   中英

JSON.NET JToken鍵區分大小寫?

[英]JSON.NET JToken Keys Are Case Sensitive?

我不得不使用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另一種方法可以讓我抓住並反序列化各個屬性?

編輯:

根據評論我最終做到了這一點:

JObject token = JObject.Load(reader);
string version = token.GetValue("version", StringComparison.OrdinalIgnoreCase).ToObject<string>(serializer);

您可以將JToken轉換為JObject並執行此操作:

string ver = ((JObject)token).GetValue("version", StringComparison.OrdinalIgnoreCase)?.Value<string>();

將JToken轉換為JObject並使用JObject的TryGetValue方法,您可以在其中指定String Comparision。

 var jObject = JToken.Load(reader) as JObject;
 JToken version;
 jObject.TryGetValue("version", StringComparison.OrdinalIgnoreCase, out version);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM