簡體   English   中英

使用 DataContractJsonSerializer 將字典序列化為 JSON 對象

[英]Serialize a Dictionary as JSON object using DataContractJsonSerializer

我有一個[DataContract]對象,它具有一些屬性並使用DataContractJsonSerializer序列化為 JSON。

其中一個屬性是Dictionary<string, string> ,當序列化發生時,它會生成以下 JSON 模式。

"extra_data": [
  {
    "Key": "aKey",
    "Value": "aValue"
  }
]

現在我需要 JSON 模式是這樣的

"extra_data": { 
        "aKey": "aValue"
}

您當然永遠無法知道值是什么,它是用戶將設置鍵和值的Dictionary

我在想這是否可以使用匿名類型發生,或者是否有我可以采取的配置來實現我的目標?

謝謝。

好吧,假設你有:

[DataContract]
public class MyObject
{
    [DataMember(Name = "extra_data")]
    public Dictionary<string, string> MyDictionary { get; set; } 

}

然后您可以使用DataContractJsonSerializerSettings並將UseSimpleDictionaryFormat設置為 true,如下所示:

    var myObject = new MyObject { MyDictionary = new Dictionary<string, string> { { "key1", "value1" }, { "key2", "value2" } } };

    DataContractJsonSerializerSettings settings = new DataContractJsonSerializerSettings { UseSimpleDictionaryFormat = true };

    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(MyObject), settings);

    var result = string.Empty;

    using (MemoryStream ms = new MemoryStream())
    {
        serializer.WriteObject(ms, myObject);

        result = Encoding.Default.GetString(ms.ToArray());
    }

暫無
暫無

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

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