从嵌套的json字符串中检索特定数据

时间:2019-04-18 03:30:30

标签: c# json javascriptserializer

我有一个如下的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"];

但是我无法读取嵌套的“详细信息” >>“计划”。我一直无法拼凑如何实现这个目标。

2 个答案:

答案 0 :(得分:2)

首先,使模型类成为您的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);
    }
}

答案 1 :(得分:0)

如果您不想为其创建新的类并反序列化它,则可以执行正则表达式。