在使用自定义ContractResolver
进行序列化时,我已经实现了用于一级对象属性的东西,如下所示:
protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
{
var properties = base.CreateProperties(type, memberSerialization);
foreach (p in properties)
{
p.PropertyName = "any_new_name";
}
return properties;
}
但是有时候我需要更深入地重命名嵌套属性。怎么可能呢?使用递归CreateProperties
?
例如,我必须序列化一个对象
public class DTO
{
public string Foo { get; set; }
public int Bar1 { get; set; }
public Bar Bar2 { get; set; }
}
Bar
是
public class GetReportDataViewModel
{
public string Foo1 { get; set; }
public int Bar21 { get; set; }
}
因此,我希望结果类似于
{
"any_new_name": "str_value",
"any_new_name": int_value,
"any_new_name": {
"any_new_name": "str_value",
"any_new_name": int_value
}
}