Я пытаюсь отправить хеш-таблицу на мой веб-сервис, используя JSON. Однако вы не можете отправить объект словарного типа (по некоторым причинам).
Решение, которое, по-видимому, работает, это «List (Of KeyValuePair (Of String, String))», в любом случае, вывод:
<WebMethod()> _
Public Function test() As List(Of KeyValuePair(Of String, String))
Dim ret As New List(Of KeyValuePair(Of String, String))
ret.Add(New KeyValuePair(Of String, String)("foo", "5"))
ret.Add(New KeyValuePair(Of String, String)("bar", "baz"))
Return ret
End Function
Выходы (в формате json): [{"Key": "foo", "Value": "5"}, {"Key": "bar", "Value": "baz"}]
Когда я хочу повторно отправить это в javascript, я должен использовать эту функцию:
<WebMethod()> _
Public Sub test2(ByVal obj As List(Of KeyValuePair(Of String, String)))
Dim dummy As UInt16 = obj.Count
End Sub
Я называю это, используя это как строку параметра JSON:
'{"obj": [{"Key":"foo","Value":"5"},{"Key":"bar","Value":"baz"}]}'
Возвращается с ошибкой. Сама по себе не ошибка, но содержимое 'obj' - это список, который содержит 2 элемента, но когда я смотрю на них в отладчике, оба ничего не значат (или не имеют значения для вас, C #).
Как я могу отправить парные данные из javascript на мой веб-сервис?