【问题标题】:Error deserializing JSON that's been converted from XML first反序列化首先从 XML 转换的 JSON 时出错
【发布时间】:2012-04-21 16:36:47
【问题描述】:

我正在创建一个 .net 应用程序来管理来自各种 Web 服务的一些提要。我刚刚开始使用 JSON.NET,我正在寻找从 JSON 到我的 .net 对象的所有转换。

所以,我认为对于我无法以 JSON 格式获取的任何提要,我会先获取 XML 并将其转换为 JSON,然后我可以使用一组处理 JSON 的方法来完成实际工作.

在此过程中,我遇到了以下问题:使用JsonConvert.SerializeXmlNode(myXMLdoc) 将XML 转换为JSON 字符串(称为myInput)后,使用JsonConvert.DeserializeObject(Of List(Of Object))(myInput) 时出现错误:

无法将 JSON 对象反序列化为类型 'System.Collections.Generic.List`1[System.Object]'。第 1 行,位置 8.

myInput 开头是这样的:

{"?xml":{"@version":"1.0","@encoding":"UTF-8","@standalone":"yes"},"items":{"@size":"72","item":[{"id":"123456","description": ...

所以,我的问题是具体是什么导致了这个错误,但我也很高兴听到一般我的方法是否是一个好主意(即转换所有我在继续之前向 JSON 输入数据)- 或者如果有一个既定的模式来做这种事情,我会更好地学习和实施。

【问题讨论】:

    标签: .net xml json serialization json.net


    【解决方案1】:

    我认为问题在于您的 JSON 字符串格式错误。

    反序列化抱怨您无法将 JSON 对象反序列化为 List。

    {} - 表示 JSON 对象 = 具有属性的 .NET 对象或 .NET 字典

    [] - 表示 JSON 数组 = .NET 数组或列表

    所以你应该只从 json 字符串中提取项目并将它们存储为 '[]'

    【讨论】:

    • 好的,谢谢。我在这里盲目地使用 json.net JsonConvert.SerializeXmlNode 方法。它显然无法预测什么是数组与对象。你知道我的替代品可能是什么吗?
    • 好吧,也许你的 xml 需要一些关于 'items' 节点的元数据来告诉 JsonConvert 这是一个列表或数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    相关资源
    最近更新 更多