簡體   English   中英

WCF服務將JSON解析為字典 <string,string> ()

[英]WCF Service parse JSON as Dictionary<string,string>()

我有一整套WCF Web服務,它們接收POST JSON對象並以其他JSON格式的數據進行回復。

在服務中的一種特定方法中,我試圖通過JSON對象並將其解析為Dictionary()。

該方法的接口定義為:

[OperationContract(Name = "GetSomeData")]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string GetSomeData(AuthenticationData authData, Dictionary<string, string> options, string srcHash);

方法聲明本身是:

public string GetSomeData(AuthenticationData authData, Dictionary<string,string> options, string srcHash)
{
    // do something fancy
}

authData和srcHash是所有方法上的標准參數,並且包含正確解析為authData的AuthenticationData對象的預期數據。

對於聲明的對象和基元,其他方法都可以正常工作,但是Dictionary始終為空。

通過發送的JSON字符串是:

"{\"options\",{\"id\":\"1\"}}"

為什么不將其解析為字典?

我最終放棄了這一點,創建了一個List類來模擬字典。

[Serializable]
public class JSONDictionary
{
    [DataMember] public string _key;
    [DataMember] public string _value;
}

然后在客戶端(JavaScript):

client.utils.toJSONDictionary = function (obj)
{
    var dictionary = [];
    for (member in obj)
    {
        dictionary.push({ _key: member, _value: obj[member].toString() });
    }
    return dictionary;
}

那很好。 在c#中使用適當的字典會很好,但是...嗯,您不可能擁有一切。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM