[英]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.