【问题标题】:JSON DeserializeObject shows 0JSON DeserializeObject 显示 0
【发布时间】:2023-03-18 19:40:01
【问题描述】:

你好,我在 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; }
    }

谢谢,希望你们今天过得愉快。

【问题讨论】:

  • 您是否尝试将Value1 重命名为Value
  • 你的意思是 public class Value1 -> public class Value?
  • 是的,我指的是班级。
  • 在 (public string Value { get; set; }) Value" 处出现错误:成员名称不能是封闭类型

标签: c# json xamarin


【解决方案1】:

反序列化 Root 对象并向下跟踪值:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 当我这样做时,我没有得到“Ausgabe.Text = news.Value”
    • I'm not getting 是什么意思?你有例外吗?还有为什么Value1.Value 是字符串而不是数字?
    • 当我这样做时,我会感到*抱歉。 ?。但我的问题已经解决了;)也谢谢你——它帮助我学习;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    相关资源
    最近更新 更多