【发布时间】:2012-11-24 20:25:49
【问题描述】:
我有以下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 运行时。
【问题讨论】:
-
Mike
string json = JsonConvert.SerializeObject(parameters);完全符合您的要求,据此page 它支持 Silverlight、windows 手机和 winRT。 -
如我所说,我不能使用第三方库。
标签: c# .net json silverlight serialization