用于JSON对象数组的类型是什么?

时间:2013-01-29 12:35:25

标签: vb.net json types casting method-signature

我有一个接收JSON有效负载的WCF服务。

例如,像这样的有效载荷:

{ "a":"123", "b":"xyz" }

适用于以下服务方法签名:

<OperationContract()>
Public Sub SomeMethod(ByVal a As Integer, ByVal b As String)

ab会自动分别投放到IntegerString

但是,现在我需要向服务方法发送一个稍微复杂的参数,一个不是IntegerString

{ "a":"123", "b":"xyz", "c":"[ { "key":"1", "val":"2" }, { "key":"2", "val":"3" } ]" }

基本上,c是包含键值对(即JSON对象)的对象数组。那么,我在服务方法签名中声明c是什么类型的?我对VB并不熟悉,所以我不知道有哪些类型可用。如果可能的话,还请提供一个示例,说明如何从您建议的任何类型中获取值。

1 个答案:

答案 0 :(得分:1)

我为此使用System.Collections.ArrayList,然后您可以使用For Each进行迭代。

我不知道您使用什么来反序列化您的JSON,但我使用JavaScriptSerializer,例如......

Imports System.Collections
Imports System.Collections.Generic
Imports System.Web.Script.Serialization

然后......

Dim sJSON as String = "{}" 'Contains the JSON in your question
Dim jsSerializer As JavaScriptSerializer = New JavaScriptSerializer()

Dim dictData As Dictionary(Of String, Object) = jsSerializer.Deserialize(Of Dictionary(Of String, Object))(sJSON)

If dictData.ContainsKey("c") Then
    If TypeOf dictData("c") Is ArrayList Then
        Dim arrData As ArrayList = DirectCast(dictData("c"), ArrayList)
        For Each arrDataRecord In arrData
        Next
    End If
End If