получить конкретные данные из вложенной строки JSON - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть блок 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 ]

2 голосов
/ 18 апреля 2019

Сначала создайте класс модели для вашей схемы 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, поскольку она быстрее и т. Д. ):

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);
    }
}
0 голосов
/ 18 апреля 2019

Если вы не хотите создавать новые классы для него и десериализовать его, вы можете просто сделать регулярное выражение.

...