.NET服务中的JSON反序列化-can'不能解决这个问题
JSON Deserialization in .NET service - can't solve this issue
我在这个问题上花了几天时间,但都无济于事。我只需要在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);
}
});
该输出:{"角色分配":[{"groupid":"2","role":"4","staffid":"},{"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
我能做些什么来解决这个问题吗?我完全被难住了,从阅读其他例子中,我似乎遵循了正确的语法,但不明白问题是什么
谢谢。
我自己设法解决了这个问题。事实证明List对象不是问题所在。这就是我将JSON传递到web服务的方式。我不得不转义引号,并更改了JSON.stringify语法。传入另一个JSON.stringify的JSON.sStringify为引号添加了一个转义符。
$.ajax({
type: "POST",
url: "/Services/Data_Services.asmx/AssignRoles",
data: "{ '"roleJSON'": " + JSON.stringify(JSON.stringify(roleassignments)) + "}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
// parse return data here....
showSuccessMessage("Group assignments set");
},
error: function (response) {
alert("Error occurred:" + response.responseText);
},
failure: function (response) {
alert("Insert failed: " + response.responseText);
}
});
除了从List声明中删除新关键字并更改传入的JSON字符串的名称外,我没有使用VB代码
Dim aRoleList As List(Of roleAssignments)
Dim returnedValue As New List(Of String)
Try
Dim js As New System.Web.Script.Serialization.JavaScriptSerializer
aRoleList = js.Deserialize(Of List(Of roleAssignments))(roleJSON)
[.....]
我想发布解决方案,这样任何其他可能有同样问题的人都可以弄清楚。和通常的开发一样,语法通常是罪魁祸首。
相关文章:
- 不能从angular2中的子组件指定父组件中的数组
- AngularJS UI路由器不能像ng路由器那样工作
- 打字稿显示不能设置未定义的属性,如何解决
- .NET服务中的JSON反序列化-can'不能解决这个问题
- 如果使用JSONP来解决同源策略,则可以'它不能用于XSS漏洞利用
- 缺少 iframe ie8.相对定位不能解决问题
- 数据切换和onclick不能一起工作,我太新了,无法应用@epascarello的解决方案
- 如何解决“不能调用方法...未定义“错误
- 为什么这个解决n皇后谜题的代码不能在javascript中工作?
- 如何解决TypeError:不能在函数中将未定义或null转换为对象.键(& lt; anonymous>)
- Arborjs解决画布模糊文本由于鼠标事件不能很好地工作
- 所有问题都不能按正确的顺序解决
- 不能清除我的TweenMax预加载动画完成后,所以我不能访问我的网站?我该如何解决这个问题?
- 增加了一个暂停功能,不能工作.有人知道解决方法吗?
- Adobe Animate Javascript TypeError之谜-不能解决
- 活动链接不能切换到点击.如何解决
- Angular服务的Jasmine测试不能解决延迟调用
- 为什么这个setTimeout解决方案不能在javascript中工作
- Javascript Koans——不能解决一个测试
- Javascript绑定问题不能通过调用bind来解决