将 DynamicObject 转换为 JSON 时结果为空
Empty result when converting DynamicObject to JSON
我有一个 class 继承自 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 数组。而这正是我所需要的。如何在不删除继承的情况下序列化我的 class?
根据您的需要,这些解决方案中的一个或两个应该可以解决您的问题:
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.
我已经通过覆盖 GetDynamicMemberNames
方法解决了我的问题:
public override IEnumerable<string> GetDynamicMemberNames()
{
yield return nameof(this.Properties);
}
现在它可以按我的需要进行序列化。
我有一个 class 继承自 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 数组。而这正是我所需要的。如何在不删除继承的情况下序列化我的 class?
根据您的需要,这些解决方案中的一个或两个应该可以解决您的问题:
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.
我已经通过覆盖 GetDynamicMemberNames
方法解决了我的问题:
public override IEnumerable<string> GetDynamicMemberNames()
{
yield return nameof(this.Properties);
}
现在它可以按我的需要进行序列化。