使用时数据契约Json序列化器 http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx序列化字典,如下所示:
[CollectionDataContract]
public class Clazz : Dictionary<String,String> {}
....
var c1 = new Clazz();
c1["Red"] = "Rosso";
c1["Blue"] = "Blu";
c1["Green"] = "Verde";
使用以下代码序列化 c1:
var dcjs = new DataContractJsonSerializer(c1.GetType());
var json = new Func<String>(() =>
{
using (var ms = new System.IO.MemoryStream())
{
dcjs.WriteObject(ms, c1);
return Encoding.ASCII.GetString(ms.ToArray());
}
})();
...生成此 JSON:
[{"Key":"Red","Value":"Rosso"},
{"Key":"Blue","Value":"Blu"},
{"Key":"Green","Value":"Verde"}]
但是,这不是 Javascript 关联数组。如果我在 javascript 中执行相应的操作:生成一个字典,然后将其序列化,如下所示:
var a = {};
a["Red"] = "Rosso";
a["Blue"] = "Blu";
a["Green"] = "Verde";
// use utility class from http://www.JSON.org/json2.js
var json = JSON.stringify(a);
结果是:
{"Red":"Rosso","Blue":"Blu","Green":"Verde"}
如何让 DCJS 为字典生成或使用与兼容的序列化字符串JSON2.js http://www.JSON.org/json2.js ?
我知道关于JavaScript序列化器 http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx来自 ASP.NET。不确定它是否对 WCF 非常友好。它是否尊重 DataMember、DataContract 属性?