JSON反序列化错误

时间:2013-05-27 04:53:58

标签: vb.net json json.net

我想将json传递给服务器,下面是json格式:

[{"StaffID":"S01","StaffRank":"Manager"},{"StaffID":"S02","StaffRank":"Waiter"}]

在我尝试使用以下代码获取json数组之后:

  Dim request As String = New StreamReader(data).ReadToEnd
    response = AddStaff(JsonConvert.DeserializeObject(Of tbl_Staff)(request))
    Return JsonConvert.SerializeObject(response)

我收到的新错误是:

  

“无法将当前JSON数组(例如[1,2,3])反序列化为类型   'tbl_Staff'因为类型需要JSON对象   (例如{“name”:“value”})正确反序列化。要修复此错误   将JSON更改为JSON对象(例如{“name”:“value”})或   将反序列化类型更改为数组或实现的类型   集合接口(例如ICollection,IList)就像List那样可以   从JSON数组反序列化。 JsonArrayAttribute也可以   添加到类型以强制它从JSON数组反序列化。“

有什么问题?感谢

2 个答案:

答案 0 :(得分:1)

问题是您无法将当前JSON数组(例如[1,2,3])反序列化为类型'tbl_Staff',因为该类型需要JSON对象(例如{“name”:“value”})才能正确反序列化。要修复此错误,请将JSON更改为JSON对象(例如{“name”:“value”})或将反序列化类型更改为数组或实现集合接口的类型(例如ICollection,IList),例如List从JSON数组反序列化。 JsonArrayAttribute也可以添加到类型中,以强制它从JSON数组反序列化。

似乎无论我如何详细地提出错误信息,人们只是不读它: - \

答案 1 :(得分:1)

我找到了答案。我只是将代码更改为List。然后完美地工作。

Dim request As String = New StreamReader(data).ReadToEnd
response = AddStaff(JsonConvert.DeserializeObject(Of List(Of tbl_Staff))(request))
Return JsonConvert.SerializeObject(response)