0

JSON ペイロードを受け取る WCF サービスがあります。

たとえば、次のようなペイロードです。

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

次のサービス メソッド シグネチャでうまく機能します。

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

aおよびは、それぞれ anおよび abに自動的にキャストされます。IntegerString

Integerただし、サービス メソッドに、またはではないもう少し複雑な引数を送信する必要がありますString

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

基本的にcは、キーと値のペア (JSON オブジェクト) を含むオブジェクトの配列です。cでは、サービス メソッドのシグネチャでどの型を宣言すればよいでしょうか。私は VB に詳しくないので、どのような型が利用できるかわかりません。可能であれば、提案した型から値を取得する方法の例も含めてください。

4

1 に答える 1

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
于 2013-01-29T16:06:10.760 に答える