【问题标题】:Convert JSON to DataTable without using NewtonSoft library在不使用 NewtonSoft 库的情况下将 JSON 转换为 DataTable
【发布时间】:2016-01-29 17:23:31
【问题描述】:

所以我正在将 JSON 字符串反序列化为 vb.net DataTable。 现在我的项目在 .NET3.5 框架上运行,因此我必须依靠现有的 JavaScriptSerializer 来完成这项工作。 有没有办法做到这一点,还是需要蛮力?

【问题讨论】:

  • 嗯,Json.NET 与 .NET 3.5 配合得很好……为什么你认为你不能使用它?
  • 我从来没有找到直接访问 DataTable 的方法 - 我的方法是使用字符串处理 Json 例程和众所周知的 Json 数据进行暴力破解。
  • @JonSkeet 我不知道它支持 .net 3.5 。感谢您提供这些信息。

标签: json vb.net datatable .net-3.5


【解决方案1】:

Json.Net

可以使用 Json.Net(它支持 .Net 3.5),如下所示:

JsonConvert.DeserializeObject(Of DataTable)(json)

这将是最容易实现的,但当然,您的 JSON 需要采用正确的格式才能正常工作,而且这并不总是容易(或可能),尤其是对于复杂类型,例如 DataTables。

或者

取决于您的 JSON 结构(一个示例会很有用)从 JSON 转换为简单对象列表然后遍历这些对象以填充 DataTable 可能更容易。

即创建一个与您的 JSON 架构匹配的新类:

Class SimpleObject

    Property Column1 As String
    ' etc.

End Class

然后循环遍历列表

    Dim ListFromJson As List(Of SimpleObject) =JsonConvert.DeserializeObject(Of List(Of SimpleObject))(JsonString)

    For Each item As SimpleObject In ListFromJson
        ' Create new row from each item in the list and add to the table
    Next

实际上,通过这种方法,您可能可以使用列表本身做所有您需要的事情,它肯定会比 DataTable 更有效。


不使用 Json.NET

如果您真的不想使用 Json.NET(这是您最简单的选择,也是行业标准),那么您可以使用 System.Runtime.Serialization.Json here is an example

我很确定它不会自动转换为 DataTable。

您需要像上面一样创建一个简单的对象来充当中间人,并遍历这些对象的列表以将它们放入 DataTable。

【讨论】:

  • 注意 OP 标题“..without...NewtonSoft..”又名 JSON.Net
  • @rheitzman 你说得对,为任何想成为烈士的人添加了对System.Runtime.Serialization.Json 的引用;-)
猜你喜欢
  • 2014-02-08
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 2020-10-27
  • 1970-01-01
  • 2015-04-20
  • 2016-06-26
  • 1970-01-01
相关资源
最近更新 更多