将动态对象转换为 JSON 时结果为空

本文关键字:结果 JSON 对象 转换 动态 | 更新日期: 2023-09-27 17:56:16

我有一个从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 数组。而这正是我所需要的。如何在不删除该继承的情况下序列化我的类?

将动态对象转换为 JSON 时结果为空

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

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

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

根据您想要的内容,这些解决方案中的任何一个或两个都应该可以解决您的问题:

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

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

从这篇文章。