我试过了:
NameValueCollection Data = new NameValueCollection();
Data.Add("foo","baa");
string json = new JavaScriptSerializer().Serialize(Data);
Run Code Online (Sandbox Code Playgroud)
它返回:["foo"]我期望{"foo" : "baa"}
我该怎么做?
我有一个自定义集合(实现IList),它有一些自定义属性,如下所示:
class FooCollection : IList<Foo> {
private List<Foo> _foos = new List<Foo>();
public string Bar { get; set; }
//Implement IList, ICollection and IEnumerable members...
}
Run Code Online (Sandbox Code Playgroud)
当我序列化时,我使用以下代码:
JsonSerializerSettings jss = new JsonSerializerSettings() {
TypeNameHandling = TypeNameHandling.Auto
};
string serializedCollection = JsonConvert.SerializeObject( value , jss );
Run Code Online (Sandbox Code Playgroud)
它正确地序列化和反序列化所有收集项目; 但是,FooCollection不考虑课堂上的任何额外属性.
无论如何将它们包含在序列化中?
我有以下类我尝试序列化到Json失败了.
class HL7 : NameValueCollection
{
public List<HL7> Children { get; set; }
public HL7()
{
Children = new List<HL7>();
}
}
Run Code Online (Sandbox Code Playgroud)
我已经创建了这样的对象并向其添加了数据:
HL7 hl7 = new HL7();
hl7.Add("a", "123");
hl7.Add("b", "456");
hl7.Children.Add(new HL7());
hl7.Children[0].Add("c", "123");
hl7.Children[0].Add("d", "456");
Run Code Online (Sandbox Code Playgroud)
我打电话的时候
JsonConvert.SerializeObject(hl7)
Run Code Online (Sandbox Code Playgroud)
我收到
["a","b"]
Run Code Online (Sandbox Code Playgroud)
我期待以下内容:
{
"a": "123",
"b": "456",
"Children": [
{
"c": "123",
"d": "456",
}
]
}
Run Code Online (Sandbox Code Playgroud)