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

标签 c# .net json silverlight serialization

我有以下 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为真,但此属性没有任何效果,也没有在我能找到的任何地方记录其预期用途。

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

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

最佳答案

尝试序列化这个

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

关于c# - 使用 DataContractJsonSerializer 序列化 Dictionary<> 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13545263/

相关文章:

c# - 如何将 SortedList 转换为 SortedList<>

.net - 无效用户登录。成员(member)服务。网站

c# - 检查进程是否返回错误 | C#

ruby - 在 ruby​​ 中处理来自 json 的错误 UTF-8

来自json的url中的php数组

c# - 声明空字节 - 可空对象必须有一个值?

c# - 如何解决 DateTimeInvalidLocalFormat 错误 : "A UTC DateTime is being converted to text in a format that is only correct for local times."?

c# - 将 MenuItem 与列表中的项目动态关联

python - 为什么 'pip install json'显示版本错误

c# - MarshalAs 嵌套结构