2010-07-06 98 views
4

我正在使用在Visual Basic .NET 3.5中編程的Web服務接收從其他應用程序發送的JSON數組。在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 

而且我定義class 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 

我只是想能夠使用1整數和1字符串的數組是由JSON發送,這就是爲什麼我試圖用他的方式。

幾個重要事項:

  • 我已經能夠與具有更簡單的參數,以便我必須使用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接收自定義對象的數組任何其他建議嗎?

任何幫助將不勝感激!

+0

Curro,請不要在標題中重複「VB.NET」等標籤。只需將其留在標籤中。 – 2010-07-06 00:33:34

+0

明白了,謝謝! – Arturo 2010-07-06 01:17:42

回答

8

我找到了解決辦法,這是正確的方式:

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

我必須指定與論點,即Web服務方法接收名稱的數組。

相關問題