2

.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を使用する必要があります。

4

1 に答える 1

0

EmitTypeInformationシリアライザーのプロパティを次のように設定してみてくださいEmitTypeInformation.Never

MSDN エントリを参照してください

于 2013-08-28T21:35:13.853 に答える