将动态对象转换为 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 数组。而这正是我所需要的。如何在不删除该继承的情况下序列化我的类?
我已经通过覆盖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; }
}
从这篇文章。