我找不到用JSON.NET序列化派生列表的方法,我开始怀疑这是否可能。让我用一些代码来解释一下情况。
我创建了一个新的类,它是从一个特定对象的列表(首先尝试一个通用对象)派生出来的,并添加了一个string属性NomGroupe
public class GroupeActes : List<Acte>
{
public string NomGroupe { get; set; }
public GroupeActes(string nom, List<Acte> liste)
{
NomGroupe = nom;
foreach (var acte in liste)
{
this.Add(acte);
}
}
}然后,在我的代码中,我声明了这个类(List<GroupeActes> listOfGroupeActes)的列表,并将其填充到数据中。对于序列化,我使用以下代码:
JsonSerializer serializer = new JsonSerializer();
serializer.TypeNameHandling = TypeNameHandling.All;
using (StreamWriter sw = new StreamWriter(@"listOfGroupeActes.json"))
using (JsonWriter writer = new JsonTextWriter(sw))
{
serializer.Serialize(writer, listOfGroupeActes);
}我尝试使用和不使用TypeNameHandling.All参数,使用Json.net属性的几个组合,甚至使用DataContract/DataMember。
到目前为止,我只能在json文件中获得每个嵌套List<Acte>的数据,而没有NomGroupe属性,或者相反。但不是两者都是,这就是我想要的。
然后提出两个问题:
谢谢你的帮忙!
发布于 2016-09-09 09:09:45
List。
相反,创建一个list属性:
public class GroupeActes
{
public List<Acte> Actes { get; set; }
public string NomGroupe { get; set; }
public GroupeActes(string nom, List<Acte> liste)
{
NomGroupe = nom;
Actes.AddRange(acte);
}
}列表(和其他集合类型)在序列化时会得到特殊处理。您不希望在输出中包含集合类型的公共属性(如Capacity和Count),因此您通过继承添加的属性也不会被序列化。
集合被序列化如下:
if o is IEnumerable
foreach object s in o
serialize o所以序列化程序甚至不会查看枚举的属性。
发布于 2016-09-09 09:07:33
尝试使用Newtonsoft Json.NET
string itemToSend = JsonConvert.SerializeObject(dataModel);https://stackoverflow.com/questions/39407575
复制相似问题