使用.NET 4.5版本的DataContractJsonSerializer并借助DataContractJsonSerializerSettings.UseSimpleDictionaryFormat,我可以序列化字典。因此,例如这本字典:
var dic = new Dictionary<string, object>
{
{ "Level", 3 },
{ "Location", "Catacomb" }
};
将转换为漂亮的JSON:
{
"Level":3,
"Location":"Catacomb"
}
但是如果我还有另一本字典作为值:
var dic = new Dictionary<string, object>
{
{ "Level", 3 },
{ "Location", new Dictionary<string, object>
{
{ "Name", "Catacobms" }
}
}
};
结果JSON看起来真的很糟糕:
{
"Level":3,
"Location":[
{
"__type":"KeyValuePairOfstringanyType:#System.Collections.Generic",
"key":"Name",
"value":"Catacobms"
}
]
}
有什么办法可以解决这个问题?
PS:我知道还有其他不错的JSON序列化器,但是在这种情况下,我需要使用DataContractJsonSerializer。
最佳答案
尝试将序列化程序上的EmitTypeInformation
属性设置为EmitTypeInformation.Never
见MSDN Entry
关于c# - 使用DataContractJsonSerializer序列化复杂的字典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18498256/