我有一个[DataContract]
具有一些属性并使用以下命令序列化为 JSON 的对象DataContractJsonSerializer
.
其中一个属性是类型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
with 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());
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)