我想在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值。 我该如何解析数组值?
答案 0 :(得分:0)
使用此方法解析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);
}
}
答案 1 :(得分:0)
如果是我,我会使用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
答案 2 :(得分:0)
使用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