Как мне прочитать дочерний узел JSON в C # - PullRequest
0 голосов
/ 03 января 2019

У меня есть этот код, который читает JSON. Это работает нормально, но я не могу понять, как читать дочерний узел Name в caller

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using Newtonsoft.Json;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("https://**url**");
        myReq.Method = "GET";
        myReq.Headers.Add("Authorization: Basic **Authkey**");

        WebResponse response = myReq.GetResponse();
        Stream responseStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(responseStream);

        string json = reader.ReadToEnd();

        List<Incident> Incidents = JsonConvert.DeserializeObject<List<Incident>>(json);

        foreach (Incident inc in Incidents)
        {
            LTInc.Text += inc.number + "</br>" + inc.briefDescription  + "</br>" + inc.dynamicName + "</br></br>";
        }          
    }

    public class Incident
    {
        public string number;
        public string briefDescription;
        public string request;
        //public IList<string> caller;
        public string dynamicName;
    }
}

Строка Json выглядит примерно так:

"number": "S 1901-079",
"request": "reg****",
"briefDescription": "sfdgfgfgfgfg",
"Caller":{
   "ID": "1",
   "Name": "TestName"

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Вам нужно изменить свой класс так:

public class Incident
{
   public string Number { get; set; }
   public string Request { get; set; }
   public string BriefDescription { get; set; }
   public List<Caller> Caller { get; set; }
}

И ввести новый класс с именем Caller как:

public class Caller
{
   public string ID { get; set; }
   public string Name { get; set; }
}
0 голосов
/ 03 января 2019

Как насчет:

public class Incident
{
    public string number;
    public string briefDescription;
    public string request;
    public IList<Caller> caller;
    public string dynamicName;
}

public class Caller
{
    public int ID;
    public string Name;
}

Но: вы должны использовать свойства вместо полей, и я предлагаю вам переключиться на HttpClient.

Два значения, которые вы должны проверить:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...