我有一块JSON如下:
{
"FirstName": "JON",
"LastName": "BAYN",
"Data": [
{
"Plan": "DAY"
}
]
}
我使用JavaScriptSerializer构建它
JavaScriptSerializer serializer_user = new JavaScriptSerializer();
dynamic jsonObject = serializer_user.Deserialize<dynamic>(content_);
dynamic firstname = jsonObject["FirstName"];
firstname = jsonObject["FirstName"];
但我无法从嵌套的“详细信息”>>“计划”中读取。我一直无法拼凑如何实现这一目标。
首先,为您的json模式创建模型类:
public class Rootobject
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Gender { get; set; }
public int MemberID { get; set; }
public Detail[] Details { get; set; }
}
public class Detail
{
public string Plan { get; set; }
public string Product { get; set; }
public DateTime ProductStartDate { get; set; }
public DateTime ProductEndDate { get; set; }
public string Flag { get; set; }
}
现在你可以将你的json字符串反序列化为RootObject(使用Json.NET而不是JavaScriptSerializer
,因为它是faster etc):
using Newtonsoft.Json;
..
// If Json.NET is not option:
// var obj = new JavaScriptSerializer().Deserialize<Rootobject>(json)
var obj = JsonConvert.DeserializeObject<Rootobject>(json);
现在您可以访问以下对象结构:
if (obj.Details != null)
{
foreach (var detail in obj.Details)
{
Console.WriteLine(detail.Plan);
}
}
如果你不想为它创建新的类并反序列化它,你可以只做一个正则表达式。