DataContractJsonSerializer

DataContractJsonSerializer

使用.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/

10-13 06:02