【问题标题】:How do I read json child node in c#如何在 C# 中读取 json 子节点
【发布时间】:2025-12-29 03:50:11
【问题描述】:

我有这个读取 json 的代码。它工作正常,但我不知道如何读取caller下的子节点Name

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"

【问题讨论】:

  • 如您所见,调用者是字符串列表。有两种解决方案 1 将 Caller 反序列化为对象并读取属性 Name 或者您可以通过字符串搜索字符串“Name”并获取所需的值。 IMO 反序列化会是更好的方法(C# 和东西 :))

标签: c# json get


【解决方案1】:

怎么样:

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

您应该检查两个读数:

【讨论】:

  • 第二类应该是Caller
【解决方案2】:

你需要改变你的类看起来像:

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; }
}

【讨论】:

    最近更新 更多