不使用 NewtonSoft 库将 JSON 转换为 DataTable
Convert JSON to DataTable without using NewtonSoft library
所以我正在将 JSON 字符串反序列化为 vb.net DataTable。
现在我的项目在 .NET3.5 框架上运行,因此我必须依靠现有的 JavaScriptSerializer 来完成这项工作。
有没有办法做到这一点或是否需要完成蛮力?
Json.Net
你可以使用Json.Net(它支持.Net 3.5),像这样:
JsonConvert.DeserializeObject(Of DataTable)(json)
这将是最容易实现的,但当然你的 JSON 需要采用正确的格式才能工作,这并不总是容易(或不可能),尤其是对于复杂的类型,例如数据表。
或者
取决于您的 JSON 结构(一个示例很有用)从 JSON 转换为简单对象列表然后遍历这些对象以填充 DataTable 可能更容易.
即创建一个新的 class 匹配您的 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。
您将需要像上面那样创建一个简单的对象作为中间人并循环遍历这些对象的列表以将它们放入数据表中。
所以我正在将 JSON 字符串反序列化为 vb.net DataTable。 现在我的项目在 .NET3.5 框架上运行,因此我必须依靠现有的 JavaScriptSerializer 来完成这项工作。 有没有办法做到这一点或是否需要完成蛮力?
Json.Net
你可以使用Json.Net(它支持.Net 3.5),像这样:
JsonConvert.DeserializeObject(Of DataTable)(json)
这将是最容易实现的,但当然你的 JSON 需要采用正确的格式才能工作,这并不总是容易(或不可能),尤其是对于复杂的类型,例如数据表。
或者
取决于您的 JSON 结构(一个示例很有用)从 JSON 转换为简单对象列表然后遍历这些对象以填充 DataTable 可能更容易.
即创建一个新的 class 匹配您的 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。
您将需要像上面那样创建一个简单的对象作为中间人并循环遍历这些对象的列表以将它们放入数据表中。