首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >序列化派生列表的列表

序列化派生列表的列表
EN

Stack Overflow用户
提问于 2016-09-09 08:53:01
回答 2查看 348关注 0票数 2

我找不到用JSON.NET序列化派生列表的方法,我开始怀疑这是否可能。让我用一些代码来解释一下情况。

我创建了一个新的类,它是从一个特定对象的列表(首先尝试一个通用对象)派生出来的,并添加了一个string属性NomGroupe

代码语言:javascript
复制
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)的列表,并将其填充到数据中。对于序列化,我使用以下代码:

代码语言:javascript
复制
        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属性,或者相反。但不是两者都是,这就是我想要的。

然后提出两个问题:

  • 有可能吗?
  • 如果是的话,我该怎么做?

谢谢你的帮忙!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-09 09:09:45

List

相反,创建一个list属性:

代码语言:javascript
复制
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);           
    }
}

列表(和其他集合类型)在序列化时会得到特殊处理。您不希望在输出中包含集合类型的公共属性(如CapacityCount),因此您通过继承添加的属性也不会被序列化。

集合被序列化如下:

代码语言:javascript
复制
if o is IEnumerable
    foreach object s in o
        serialize o

所以序列化程序甚至不会查看枚举的属性。

票数 1
EN

Stack Overflow用户

发布于 2016-09-09 09:07:33

尝试使用Newtonsoft Json.NET

代码语言:javascript
复制
string itemToSend = JsonConvert.SerializeObject(dataModel);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39407575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档