Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何向asmx Web服务发送哈希表?_.net_Javascript_Web Services_Json - Fatal编程技术网

.net 如何向asmx Web服务发送哈希表?

.net 如何向asmx Web服务发送哈希表?,.net,javascript,web-services,json,.net,Javascript,Web Services,Json,我正在尝试使用JSON向我的Web服务发送一个哈希表。但是,由于某些原因,无法发送字典类型的对象 显然有效的解决方案是“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, Str

我正在尝试使用JSON向我的Web服务发送一个哈希表。但是,由于某些原因,无法发送字典类型的对象

显然有效的解决方案是“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
这将返回一个错误。这本身并不是一个错误,但“obj”的内容是一个包含两个项目的列表,但当我在调试器中查看它们时,它们都是空的(或者对于C#people来说是空的)

如何将配对数据从javascript发送到我的Web服务?

试试这个

'{"obj": {"foo":"5","bar":"baz"}}'

如果您将test2更改为接收字典对象列表,我想您就可以开始了

<WebMethod()> _
Public Sub test2(ByVal obj As List(Of Dictionary(Of String, String)))
    Dim dummy As UInt16 = obj.Count
End Sub
_
Public Sub test2(ByVal obj As List)(字典(字符串的)列表)
作为UInt16的Dim虚拟对象=对象计数
端接头

[部分答案]:我遇到了类似的问题,最终使用这个JSON库()和JSON.stringify(yourJSONObj)将对象发送回我的服务

我的问题与JSON没有正确识别我的对象有关,它假设我的一些属性名是JSON原语。通过使用这个调用(JSON.stringify()),它修复了这个问题

你可以这样做:

var data = JSON.stringify('{"obj": [{"Key":"foo","Value":"5"},{"Key":"bar","Value":"baz"}]}'
); 

然后将数据对象发送到您的ASMX服务。

< P>如果您从.NET调用WebService,并且需要以JSON格式传递数据,请考虑使用JayRoar()将其转换为JSON。只需引用DLL、导入名称空间、创建JsonObject、填充内容并将其导出为字符串。这里有一个例子


Imports Jayrock.Json
Imports Jayrock.Json.Conversion

Public Function foo(hsh As HashTable) As String

  Dim jObj As New JsonObject()

  jObj.Put("_myHashTable", hsh)

  Return JsonConvert.ExportToString(jObj)

End Sub


如果需要通过AJAX将数据从DOM带到Web服务,我会使用上面提到的json.org中的Javascript库。您也可以使用JayRock轻松地将JSON字符串转换为JsonObject。

与(KeyValuePair()的)列表组合使用不起作用。我需要另一种对象类型吗?IIRC字典在MVC中匹配得相当好,不太熟悉服务调用,也不太熟悉事物如何传入。。。引用字符串不起作用吗?抱歉,这里有点含糊不清,只是比通信部分更熟悉JS,或者在通信通道中如何编码。我遇到了相反的问题-从MVC返回JSON格式的哈希表-它很简单,就像返回字典一样。实际上相当不错。
var data = JSON.stringify('{"obj": [{"Key":"foo","Value":"5"},{"Key":"bar","Value":"baz"}]}'
); 

Imports Jayrock.Json
Imports Jayrock.Json.Conversion

Public Function foo(hsh As HashTable) As String

  Dim jObj As New JsonObject()

  jObj.Put("_myHashTable", hsh)

  Return JsonConvert.ExportToString(jObj)

End Sub