c# - 将复杂的 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 加载到这个类中,而不会引入太多异国情调的东西。
解决方案
您使用的 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
]
}
]
}
推荐阅读
- angular - 业力:如何调试 RangeError:超出最大调用堆栈大小?
- swift - Swift:线程安全的单例,为什么我们使用同步进行读取?
- r - 使用 roll = "nearest" 限制合并范围
- c# - LINQ 从 IQueryable 获取平均值
- java - 如何动态设置 ImageResource?
- python - Python remove 方法从两个列表中删除元素
- python-3.x - 超类方法没有按预期工作,为什么?
- python - 添加购物车到订单
- ruby-on-rails - rswag gem 无法识别我在 rspec 中的参数
- python - “模块未找到错误”。如何让我的 python 识别模块的安装位置?