【问题标题】:Deserializing JSON file, No output appearing反序列化 JSON 文件,没有输出出现
【发布时间】:2018-12-04 07:57:40
【问题描述】:

一直在尝试反序列化某个 JSON 文件结构如下

[
  {
    "Inputs": [
      {
        "Input": "ABC"
      },
      {
        "Input": "DEF "
      },
      {
        "Input": "GHI"
      }
    ]
  }
]

我现在想将 ABC、DEF、GHI 打印到我的调试输出窗口,但我没有得到任何结果。我的 C# 代码如下:

public partial class InputArray
{
    [JsonProperty("Inputs")]
    public List<InputObject> Inputs { get; set; }
}

public partial class InputObject
{
    [JsonProperty("Input")]
    public string Input { get; set; }
}

public static void LoadJson()
{
    using (StreamReader r = new StreamReader("input.json"))
    {
        var json = r.ReadToEnd();
        var items = JsonConvert.DeserializeObject<List<InputObject>>(json);


        foreach (var item in items)
        { 
            Debug.WriteLine(item.Input);
        }

    }
}

我尝试了几种不同的堆栈溢出解决方案,但均未成功。

【问题讨论】:

  • 你不应该反序列化List&lt;InputArray&gt;吗?
  • 投票结束,因为这似乎是一个错字。
  • var items = JsonConvert.DeserializeObject(json);给我一个用户未处理的异常
  • 我一定还有什么遗漏的,谢谢你的尝试

标签: c# json parsing debugging deserialization


【解决方案1】:

仔细查看您的 JSON。根是一个数组,用最外层的[]表示。

在数组内部,有一个对象,由您的InputArray 类表示。请注意,这不是您的 InputObject 课程。

您应该反序列化 List&lt;InputArray&gt;

var items = JsonConvert.DeserializeObject<List<InputArray>>(json);

然后,您需要使用嵌套循环来遍历项目:

   foreach (var inputArray in items) {
        foreach (var inputObject in inputArray.Inputs) {
            Console.WriteLine(inputObject.Input);
        }
    }

【讨论】:

    【解决方案2】:

    你的课程应该是这样的

    public class InputObject
    {
        public string Input { get; set; }
    }
    
    public class InputArray
    {
        public List<InputObject> Inputs { get; set; }
    }
    

    你应该像下面这样序列化

    var items = JsonConvert.DeserializeObject<List<InputArray>>(json);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多