C#每个项目的JSON

C#每个项目的JSON,c#,json,C#,Json,我试图从JSON链接中获取一些信息,并以友好的方式向用户显示。我已经尝试了所有的方法,但我似乎无法理解这一点。基本上我想向用户展示 ID=somevalue GUID=SomeValue Name=Somevalue 等等 在获得JSON后,我转到并获得了如下所示的类: public class Computer { public string ID { get; set; } public string GUID { get; set; } public string

我试图从JSON链接中获取一些信息,并以友好的方式向用户显示。我已经尝试了所有的方法,但我似乎无法理解这一点。基本上我想向用户展示

ID=somevalue

GUID=SomeValue

Name=Somevalue 等等

在获得JSON后,我转到并获得了如下所示的类:

public class Computer
{
    public string ID { get; set; }
    public string GUID { get; set; }
    public string name { get; set; }
    public string type { get; set; }
    public string entity { get; set; }
    public string serial { get; set; }
    public string uuid { get; set; }
    public string inventorynumber { get; set; }
    public string status { get; set; }
    public string site { get; set; }
    public string location { get; set; }
    public string manufacturer { get; set; }
    public string model { get; set; }
    public string owner { get; set; }
    public string lastuser { get; set; }
    public string domain { get; set; }
    public string os { get; set; }
    public string servicepack { get; set; }
    public string osversion { get; set; }
}

public class Data
{
    public List<Computer> computers { get; set; }
}

public class RootObject
{
    public string state { get; set; }
    public Data data { get; set; }
} 


HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://api.xxx/?xxx=xxx&format=json ");
        try
        {
            WebResponse response = request.GetResponse();

            using (Stream responseStream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);

                var rawJson = reader.ReadToEnd();
                RootObject rootResult = JsonConvert.DeserializeObject<RootObject>(rawJson);


                Console.Write();

                Console.ReadKey();
            }

        }

        catch (WebException ex)
        {
            WebResponse errorResponse = ex.Response;
            using (Stream responseStream = errorResponse.GetResponseStream())
            {
                StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
                String errorText = reader.ReadToEnd();
                Console.WriteLine(errorText);
            }

            throw;
        }
我得到了我的“成功”价值。但我找不到一种方法来真正获取“计算机”下的数据 谁能告诉我我做错了什么

我也试着回答类似的问题,但它们似乎都不一样,因为我的JSON格式有点不同


提前谢谢

如果您只是在
rootResult.data.computers
上迭代,会发生什么情况,这应该是一个计算机列表

if(rootResult.data != null)
{
    foreach (var computer in rootResult.data.computers)
    {
        Console.WriteLine(computer.ID);
        Console.WriteLine(computer.GUID);
       // etc for all properties
    }
}

如果您只是在
rootResult.data.computers
上迭代,会发生什么情况,这应该是一个计算机列表

if(rootResult.data != null)
{
    foreach (var computer in rootResult.data.computers)
    {
        Console.WriteLine(computer.ID);
        Console.WriteLine(computer.GUID);
       // etc for all properties
    }
}

执行此操作时,
rootResult.data
中有什么内容?我得到JsonDemo.Program+数据(JsonDemo是我的解决方案的名称)您可以发布您试图反序列化的JSON吗?执行此操作时,
rootResult.data
中有什么内容?我得到JsonDemo.Program+数据(JsonDemo是我的解决方案的名称)你能发布你试图反序列化的JSON吗?我发现上面的代码有一个错误:System.NullReferenceException:“对象引用未设置为对象的实例。”JsonDemo.Program.Data.Computer.get返回null。有趣,在你的问题中提到这一点会很有用:)那么要么你的回答不包含计算机,要么反序列化你的回答出了问题。你的JSON响应中有计算机吗?当我从链接中提取时,这是我的JSON。
{“state”:“SUCCESS”,“data”:{“computers”:[{“ID”:“XXXX”,“GUID”:“XXXX”,“name”:“XXXX”,“type”:“XXXX”,“entity”:“serial”:“XXXX”,“uuid”:“XXXX”,“inventorynumber”:“XXXX”,“status”:“XXXX”,“site”:“XXXX”,“location”:“WSJ>310>6>17>36”,“制造商”:“Apple”,“model”:“XXXX”,“所有者”:“XXXX”,“最后用户”:“XXXX”,“域”:“XXXX”,“操作系统”:“XXXX”,“servicepack”:XXXX,“osversion”:“XXXX”}]}
@Besiktas如果我大大简化您的Json,使计算机只有ID和GUID,它似乎工作得很好。我建议您也这样做,看看会发生什么,然后逐步构建Json。只需使用字符串进行测试,这将使事情变得更简单。谢谢。如果我简化,我也能让它工作。发生了一些奇怪的事情,我似乎无法修复它。为此花了整个周末。我在上面的代码中遇到一个错误:System.NullReferenceException:“对象引用未设置为对象的实例。”JsonDemo.Program.Data.Computer.get返回null。有趣,在你的问题中提到这一点会很有用:)那么要么你的回答不包含计算机,要么反序列化你的回答出了问题。你的JSON响应中有计算机吗?当我从链接中提取时,这是我的JSON。
{“state”:“SUCCESS”,“data”:{“computers”:[{“ID”:“XXXX”,“GUID”:“XXXX”,“name”:“XXXX”,“type”:“XXXX”,“entity”:“serial”:“XXXX”,“uuid”:“XXXX”,“inventorynumber”:“XXXX”,“status”:“XXXX”,“site”:“XXXX”,“location”:“WSJ>310>6>17>36”,“制造商”:“Apple”,“model”:“XXXX”,“所有者”:“XXXX”,“最后用户”:“XXXX”,“域”:“XXXX”,“操作系统”:“XXXX”,“servicepack”:XXXX,“osversion”:“XXXX”}]}
@Besiktas如果我大大简化您的Json,使计算机只有ID和GUID,它似乎工作得很好。我建议您也这样做,看看会发生什么,然后逐步构建Json。只需使用字符串进行测试,这将使事情变得更简单。谢谢。如果我简化,我也能让它工作。发生了一些奇怪的事情,我似乎无法修复它。为了这个花了整个周末。