【发布时间】:2015-02-24 21:09:17
【问题描述】:
我在这个问题上花了几天时间都无济于事。我只需要在 VB.NET 中反序列化一个 JSON 对象,但不断收到此错误:
“数组的反序列化不支持类型'System.String'。”
我已经使用了我发现的所有建议来尝试解决这个问题,但没有一个奏效。
这是我的 JQuery 代码:
$.ajax({
type: "POST",
url: "/Services/Data_Services.asmx/AssignRoles",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ roleAssignments: roleassignments }),
datatype: "json",
success: function (data) {
alert("Group assignments successfully set");
},
error: function (response) {
alert(response.responseText);
},
failure: function (response) {
alert(response.responseText);
}
});
这输出: {"roleAssignments":[{"groupid":"2","role":"4","staffid":"111"},{"groupid":"2","role":"5"," staffid":"999"},{"groupid":"2","role":"6","staffid":"999"},{"groupid":"2","role":"7" ,"staffid":"0"},{"groupid":"2","role":"8","staffid":"999"},{"groupid":"2","role":" 9","staffid":"15"}]}
(JSON 有效。我在 JSONLint 中检查过)
这是在反序列化函数中返回错误的 .NET 代码:
Public Function AssignRoles(ByVal roleAssignments As String) As String()
[.........]
Dim aRoleList As New List(Of roleAssignments)
Dim js As New System.Web.Script.Serialization.JavaScriptSerializer
aRoleList = js.Deserialize(Of List(Of roleAssignments))(roleAssignments)
[.........]
End Function
Public Class roleAssignments
Public Property groupid As String
Public Property role As String
Public Property staffid As String
End Class
有什么想法可以解决这个问题吗?我完全被难住了,通过阅读其他示例,我似乎遵循了正确的语法,但无法理解问题所在。
谢谢。
【问题讨论】:
标签: javascript asp.net json vb.net deserialization