JSON DeserializeObject 显示 0

问题描述

你好,我在 c#(xamarin) 中遇到了一些问题 我遵循了有关分相的 XXX 教程。 我只需要价值。 有人能告诉我我是如何解决这个问题的吗?

我的 Json:

{
   "Header":{
      "Version":5,"Device":"80","Timestamp":1610066048
   },"Data":{
      "Inputs":[
         {
            "Number":2,"AD":"A","Value":{
               "Value":62.0,"Unit":"1"
            }
         }
      ]
   },"Status":"OK","Status code":0
}

C#

var client = new WebClient();
            string json = client.DownloadString("https://XXXXXXX.com/heizung.PHP");
             Value1 news = JsonConvert.DeserializeObject<Value1>(json);

            Ausgabe.Text = news.Value;

我的班级

  public class Header
    {
        public int Version { get; set; }
        public string Device { get; set; }
        public int Timestamp { get; set; }
    }

    public class Value1
    {
        public string Value { get; set; }
        public string Unit { get; set; }
    }

    public class Input
    {
        public int Number { get; set; }
        public string AD { get; set; }
        public Value1 Value { get; set; }
        
    }

    public class Data
    {
        public List<Input> Inputs { get; set; }
    }

    public class Root
    {
        public Header Header { get; set; }
        public Data Data { get; set; }
        public string Status { get; set; }
        public int Statuscode { get; set; }
    }

谢谢,我希望你们都有美好的一天。

解决方法

反序列化根对象并跟踪值:

Root news = JsonConvert.DeserializeObject<Root>(json);

Ausgabe.Text = news.Data.Inputs[0].Value.Value;
,

您应该将 json 反序列化为 Root 类:

var root = JsonConvert.DeserializeObject<Root>(json);

根对象反序列化后,您可以选择所需的任何值。例如:

var values = root.Data.Inputs.Select(i => i.Value.Value); // string sequence