我尝试反序列化JSON字符串时收到错误:
无法反序列化当前的JSON数组(例如[1,2,3])...
vb.net代码:
Public Class DATA
Public Property CPU As String
End Class
Dim data As DATA = JsonConvert.DeserializeObject(Of DATA)(File.ReadAllText("laptop.json"))
TextBox25.Text = DATA.CPU
Run Code Online (Sandbox Code Playgroud)
JSON文件:
[
{
"spec": "CPU";
"value": "Intel Core i3-4005U"
};
{
"spec": "Speed";
"value": "1.7 GHz"
};
{
"spec": "Cache";
"value": "3MB"
};
{
"spec": "RAM";
"value": "4GB"
};
{
"spec": "Warranty Period";
"value": "1 Year"
}
]
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个错误?
这里有三个问题.
首先,您所显示的JSON无效.JSON对象中的属性和JSON数组中的值必须用逗号(,)分隔,而不是用分号(;)分隔.见JSON.org.
其次,您的JSON表示项目的数组(或列表),但您尝试反序列化为单个类.您需要反序列化为这样的列表:
Dim json As String = File.ReadAllText("laptop.json")
Dim list As List(Of DATA) = JsonConvert.DeserializeObject(Of List(Of DATA))(json)
Run Code Online (Sandbox Code Playgroud)
第三,DATA您使用的类中的属性名称与数组中对象的JSON属性名称不匹配.该类应该像这样定义:
Class DATA
Public Property spec As String
Public Property value As String
End Class
Run Code Online (Sandbox Code Playgroud)
小提琴:https://dotnetfiddle.net/0aI2C3
| 归档时间: |
|
| 查看次数: |
1759 次 |
| 最近记录: |