使用 VB.Net 反序列化 JSON 对象

本文关键字:JSON 对象 反序列化 Net VB 使用 | 更新日期: 2023-09-27 17:56:55

我有一个 VB.Net Windows应用程序,它对C# Web应用程序进行RESTful WS调用,该应用程序使用 JSON.Net 来序列化包含在 Dictionary<String, String> .

来自 C# Web 应用程序的响应以 JSON 字符串的形式返回,如下所示:

"{"8bf370f3-d258-40d3-a659-063db90f5291":"String1","5a0248de-7139-44ba-991b-072d598ff9ab":"String2"}"

在 VB.Net 端,我使用 JSON.Net 尝试反序列化响应,但出现此错误:

Error converting value 
"{"8bf370f3-d258-40d3-a659-063db90f5291":"String1","5a0248de-7139-44ba-991b-072d598ff9ab":"String2"}"
to type 'System.Collections.Generic.Dictionary`
2[System.String,System.String]'. Path '', line 1, position 1383.

这是 VB.Net 代码:

..
..
reader = New StreamReader(response.GetResponseStream())
' Console application output 
Dim responseStr As String = reader.ReadToEnd
'MsgBox(responseStr)
'Error occurs on the next line.
Dim dict As Dictionary(Of String, String) = JsonConvert.DeserializeObject(Of Dictionary(Of String, String))(responseStr)
Dim pair As KeyValuePair(Of String, String)
For Each pair In dict
    MsgBox("Key: " & pair.Key.ToString & " Value: " & pair.Value)
Next
..
..

我尝试使用"对象"作为类型而不是字符串,但出现相同的错误。 我看不出 JSON 本身有什么问题,也看不出反序列化方法调用有什么问题,所以我不知所措。任何建议将不胜感激。

使用 VB.Net 反序列化 JSON 对象

我认为你的 JSON 需要看起来像这样:

[{"8bf370f3-d258-40d3-a659-063db90f5291":"String1"},{"5a0248de-7139-44ba-991b-072d598ff9ab":"String2"}]

字典是键/值对的集合,JSON 中没有项目集合,只有一个具有 4 个属性的对象。