簡體   English   中英

如何在C#中解析JSON鍵和數組

[英]How to parse json key and arrays in C#

我有要在C#中解析的json數據。

Json : 
   {
    Key1 : 5,
    Key2 : 6,
    Array : [
         {Id : 5} , 
         {Id : 6} , 
         {Id : 7} ,
         ...
    ]
    }

C#代碼:

var dict = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(jsonData);
var key1 = dict["Key1"];
var key2 = dict["Key2"];
var array = dict["Array"];

// array type is object { System.Collections.ArrayList }

使用此代碼,我可以采用key1和key2值,但不能采用Array值。 如何解析數組值?

使用此方法解析json字符串

public static T Deserialize<T>(string json)
{
    using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
    {
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
        return (T)serializer.ReadObject(ms);
    } 
}

如果是我,我將使用JSON.NET將JSON反序列化為JObject。 然后,您可以遍歷JSON對象模型,這比將其強制放入字典更容易。

等效的解析代碼如下所示:

 var json = JObject.Parse(jsonData)
 JValue the_id_of_the_first_item_in_the_array_named_Array = ((JValue)json["Array"][0]["Id"]);
 object the_underlying_value = the_id_of_the_first_item_in_the_array_named_Array.Value;

在.NET Fiddle上運行它: https : //dotnetfiddle.net/mbmane

使用dynamic關鍵字可以使您的代碼更具可讀性。

dynamic obj = JsonConvert.DeserializeObject(json);

int key1 = obj.Key1;
int key2 = obj.Key2;
foreach(var item in obj.Array)
{
    int id = item.Id;
    Console.WriteLine(id);
}

PS:它需要Json.Net

暫無
暫無

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

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