首页 > 解决方案 > 将复杂的 JSON 反序列化为对象 - 出现错误无法反序列化当前的 JSON 数组(例如 [1,2,3])

问题描述

我有一个 JSON 对象字符串,我正在尝试将其反序列化为我创建的 C# 对象,但在反序列化过程中不断收到错误消息无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型,因为类型需要一个 JSON 对象(例如 {\"name\":\"value\"})才能正确反序列化。

JSON 似乎在一个数组中有数组,我怀疑这是导致问题的原因,但我没有任何运气找出确切的问题。我必须承认在处理 JSON 数据方面我是新手,所以我发现自己在这里。

我尝试了各种方法,包括为我生成课程的在线工具,但它并没有给我一个理想的结果。我找到的所有示例都不像我在这里使用的 JSON,这给我造成了一些障碍。

有问题的JSON:

{
  "a": "2019-08-08T19:34:25Z",
  "b": [
    {
      "c": "asdf"
    },
    [
      "d",
      "e",
      "f"
    ],
    {
      "g": "sdfg"
    },
    {
      "h": "dfgh"
    },
    {
      "i": "fghj"
    },
    {
      "j": "ghjk"
    },
    [
      "k",
      10,
      10
    ]
  ]
}

我试图反序列化的对象:

    public class ClassA
    {
        public DateTime a { get; set; }
        public List<ClassB> b { get; set; }
    }

    public class ClassB
    {
        public string c { get; set; }
        public List<string> stringList1 { get; set; }
        public string g { get; set; }
        public string h { get; set; }
        public string i { get; set; }
        public string j { get; set; }
        public List<string> stringList2 { get; set; }
    }

最后,我用来反序列化的代码:

ClassA jclassa = JsonConvert.DeserializeObject<ClassA>(strdata);

我希望我可以将这个 JSON 加载到这个类中,而不会引入太多异国情调的东西。

标签: c#jsonjson.net

解决方案


您使用的 JSON 与您要反序列化的对象类具有不同的结构。

与您的对象匹配的 JSON 示例将是这样的

{
  "a": "2019-08-08T19:34:25Z",
  "b": [
    {
      "c": "asdf",
      "stringList1": [
        "d",
        "e",
        "f"
      ],
      "g": "sdfg",
      "h": "dfgh",
      "i": "fghj",
      "j": "ghjk",
      "stringList2": [
        "k",
        10,
        10
      ]
    }
  ]
}

推荐阅读