0

我想将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),例如可以从 JSON 反序列化的 List数组。也可以将 JsonArrayAttribute 添加到类型中,以强制它从 JSON 数组中反序列化。”

问题是什么?谢谢

4

2 回答 2

1

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

似乎无论我如何详细地制作该错误消息,人们只是不阅读它:-\

于 2013-05-27T05:39:39.737 回答
1

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

Dim request As String = New StreamReader(data).ReadToEnd
response = AddStaff(JsonConvert.DeserializeObject(Of List(Of tbl_Staff))(request))
Return JsonConvert.SerializeObject(response)
于 2013-05-27T09:31:01.230 回答