若是直接獲取某個json數組中的元素將獲得以下的jsonjson
{ "44": { "height": 25, "appeared": -70000000, "length": 44, "order": "saurischia", "vanished": -70000000, "weight": 135000 } }
這個json對象若是使用C#類來反序列化,那麼實體類的結構以下,實體類的類名須要與json對象key相同的才能夠使用json反序列化,這樣對程序形成了極大的不便。數組
public class 44 { public int height { get; set; } public int appeared { get; set; } public int length { get; set; } public string order { get; set; } public int vanished { get; set; } public int weight { get; set; } } public class Root { public 44 44 { get; set; } }
以上json對象因爲key是動態的沒法使用C#反序列化,可是直接取到value就能序列化了,以下。app
{ "height":25, "appeared":-70000000, "length":44, "order":"saurischia", "vanished":-70000000, "weight":135000 }
以上json對象就能夠使用咱們經常使用的格式轉換了。函數
public class Root { public int height { get; set; } public int appeared { get; set; } public int length { get; set; } public string order { get; set; } public int vanished { get; set; } public int weight { get; set; } }
從動態key的json對象裏面拿到value那部分,能夠反序列化的字符串,請使用以下的函數,注意引入類庫。code
using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Linq;
/// <summary> /// 本類用於處理動態Key的json對象 /// </summary> /// <param name="jObject">須要處理的json對象</param> /// <returns>json對象的第一個元素的values</returns> public static string GetJsonValue(string strJson) { string strResult; JObject jo = JObject.Parse(strJson); string[] values = jo.Properties().Select(item => item.Value.ToString()).ToArray(); if (values == null) { strResult = ""; } else { strResult = values[0]; } return strResult; }