c# – 使用DataContractJsonSerializer序列化Dictionary <>对象

我有以下字典<>宾语:

Dictionary<String, object> parameters = new Dictionary<string, object>();
parameters.Add("username", "mike");
parameters.Add("password", "secret");
parameters.Add("persist", false);

当我序列化它时:

using (MemoryStream stream = new MemoryStream())
{
   DataContractJsonSerializer serializer = new DataContractJsonSerializer(parameters.GetType());
   serializer.WriteObject(stream, parameters);

   byte[] bytes = stream.ToArray();
   string json = Encoding.UTF8.GetString(bytes, 0, bytes.Length);

   return json;
}

我得到以下内容:

"[{\"Key\":\"username\",\"Value\":\"mike\"},{\"Key\":\"password\",\"Value\":\"secret\"},{\"Key\":\"persist\",\"Value\":false}]"

我想得到的是原始键/值对映射,如下所示:

"{\"username\":\"mike\", \"password\":\"secret\", \"persist\": false}"

我已经尝试将UseSimpleDictionaryFormat设置为true,但是这个属性没有任何效果,也没有在我能找到的任何地方记录它的用途.

我不能使用自定义类,因为在编译时不知道参数键/值对.

我也不能使用第三方库,比如JSon.NET.我正在使用Silverlight框架和Windows Phone 8运行时.

解决方法:

尝试序列化这个

var parameters = new
{
    username = "mike",
    password = "secret",
    persist = false
}

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...