gpt4 book ai didi

vb.net - 在 Web 服务中接收 JSON 数组作为参数

转载 作者:行者123 更新时间:2023-12-04 17:58:45 24 4
gpt4 key购买 nike

我正在使用在 Visual Basic .NET 3.5 中编程的 Web 服务来接收从其他应用程序发送的 JSON 数组。

我正在发送一个像这样的 JSON 字符串:

[{"idRecoleccion":1,"PIN":"553648138"},{"idRecoleccion":2,"PIN":"553648138"}]

我在 Visual Basic .NET 中收到如下代码:
<WebMethod()> _
Public Function ConfirmaRecol(ByVal ArrayConfirma() As cConfirmaRecoleccion) As Boolean
For X = 0 To ArrayConfirma.Length -1
' Usage example
ArrayConfirma(X).PIN
ArrayConfirma(X).idRecoleccion
End If
Next
End Function

我是这样定义 cConfirmaRecolecciones 类的:
Public Class cConfirmaRecoleccion
Dim p_idRecoleccion As Integer
Dim p_PIN As String

Public Property idRecoleccion() As Integer
Get
Return p_idRecoleccion
End Get
Set(ByVal value As Integer)
p_idRecoleccion = value
End Set
End Property

Public Property PIN() As String
Get
Return p_PIN
End Get
Set(ByVal value As String)
p_PIN = value
End Set
End Property
End Class

我只想能够使用由 JSON 发送的 1 个整数和 1 个字符串的数组,这就是我试图以他的方式使用它的原因。

一些重要的事情要知道:
  • 我已经能够将 Web 服务与具有更简单参数的方法一起使用,因此我必须使用 Web 服务的配置是正确的。

  • 这是我在服务器上遇到的错误:
    {"Message":"Type \u0027System.Collections.Generic.IDictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]\u0027 is not supported for deserialization of an array.","StackTrace":"   at System.Web.Script.Serialization.ObjectConverter.ConvertListToObject(IList list, Type type, JavaScriptSerializer serializer, Boolean throwOnError, IList& convertedList)\r\n   at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n   at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n   at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToType(Object o, Type type, JavaScriptSerializer serializer)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n   at System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext context, JavaScriptSerializer serializer)\r\n   at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}

    对于如何在 Visual Basic .NET 中接收自定义对象数组,各位大师有什么其他建议吗?

    最佳答案

    我找到了解决方案,这是正确的方法:

    {"ArrayConfirma": [{"idRecoleccion":1,"PIN":"553648138"},{"idRecoleccion":2,"PIN":"553648138"}]}

    我必须指定一个数组,其中包含 Web 服务方法正在接收的参数的名称。

    关于vb.net - 在 Web 服务中接收 JSON 数组作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3182848/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com