我正在创建一个 .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) - 或者是否有一个既定的模式来做这种事情我会更好地学习和实现。
问题出在 JSON 字符串的错误格式上。
反序列化抱怨无法将 JSON 对象反序列化为列表。
{} - 表示 JSON 对象 = 带有属性的 .NET 对象或 .NET 字典
[] - 表示 JSON 数组 = .NET 数组或列表
因此,您应该仅从 json 字符串中提取项目并将它们存储为"[]"