【发布时间】:2026-01-05 18:55:02
【问题描述】:
我有一个 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 加载到这个类中,而不会引入太多异国情调的东西。
【问题讨论】:
-
您的数组不是
List<ClassB>,因为它也包含数组。您必须编写一个custom JsonConverter 来处理该数组。或者将b改为JArray。