-1

我通过http post接收以下字符串作为json:

 Dim json As String = "[{" + """name"":""jocelyne" + """," + """mo"":""jocelyne" + """}" + ",{" + """name"":""eliane" + """," + """mo"":""12345678" + """}" + "]"

我需要将此 json 数组转换为 vb.net 中的数据表

我尝试使用 NewtonSoft.json.dll :

Dim jss As New System.Web.Script.Serialization.JavaScriptSerializer()
Dim deserializedProduct As Dictionary(Of String, String) = JsonConvert.DeserializeObject(Of Dictionary(Of String, String))(json)

但是我不断得到当前位置没有可用的源代码,尽管我添加了对我的项目的引用并且它在 bin 文件中..

实际错误是:

Cannot deserialize JSON array into type 'System.Collections.Generic.Dictionary`2[System.String,System.String]'.

有没有办法解决这个问题,或者有人有另一种方法将 json 数组转换为 vb.net 中的数据表吗?

4

1 回答 1

1

您尝试将 JSON 字符串反序列化为Dictionary应该表示对象的 a,但您的 JSON 字符串包含两个对象的数组,而不是单个对象。

所以你应该使用List(Of Dictionary(Of String, String))而不是Dictionary(Of String, String)

LINQPad:

Sub Main
    Dim json As String = "[{" + """name"":""jocelyne" + """," + """mo"":""jocelyne" + """}" + ",{" + """name"":""eliane" + """," + """mo"":""12345678" + """}" + "]"
    Dim deserializedProduct As List(Of Dictionary(Of String, String)) =  JsonConvert.DeserializeObject(Of List(Of Dictionary(Of String, String)))(json)
    deserializedProduct.Dump()
End Sub

在此处输入图像描述

如果你想要一个DataTable,只需使用

Sub Main
    Dim json As String = "[{" + """name"":""jocelyne" + """," + """mo"":""jocelyne" + """}" + ",{" + """name"":""eliane" + """," + """mo"":""12345678" + """}" + "]"
    Dim table As DataTable = JsonConvert.DeserializeObject(Of DataTable)(json)
    table.Dump()
End Sub

在此处输入图像描述

于 2013-10-22T12:34:45.957 回答