将DynamicObject转换为JSON时为空结果

时间:2016-07-10 15:32:03

标签: c# json dynamicobject

我有一个继承自DynamicObject的班级。它包含List<MyProperty>中存储的所有属性:

public class MyObject : DynamicObject
{
    public List<MyProperty> Properties { get; set; }
}
public class MyProperty
{
    public string Name { get; set; }
    public string Value { get; set; }
}

我想使用Newtonsoft Json将其序列化为JSON。但转换后我得到一个空对象:{}。当我从DynamicObject中删除继承时,我将所有属性序列化为JSON数组。而这正是我所需要的。如何在不删除继承的情况下序列化我的类?

2 个答案:

答案 0 :(得分:1)

我通过覆盖GetDynamicMemberNames方法解决了我的问题:

public override IEnumerable<string> GetDynamicMemberNames()
{
    yield return nameof(this.Properties);
}

现在它按照我的需要进行序列化。

答案 1 :(得分:0)

根据您的需要,这些解决方案中的一个或两个都可以解决您的问题:

public class MyObject : DynamicObject
{
    [JsonProperty("MyList")]
    public List<MyProperty> MyList { get; set; }
}

[DataContract]
public class MyObject : DynamicObject
{
    [DataMember]
    public List<MyProperty> MyList { get; set; }
}

来自this post