我可以在序列化到JSON的过程中将属性展平/解包吗?

byqmnocz  于 2023-05-02  发布在  其他
关注(0)|答案(1)|浏览(103)

我有以下类型:

class A{ 
  public int A{get;set;}
  public int B{get;set;}
}

class B{
 public A A {get; set;}
 public int C {get;set;}
}

是否有一个注解可以用于public A A{get;set;},它会导致A的内容变平/解包,因此API端点返回的输出JSON看起来像这样:

{
"a" : valuea,
"b" : valueb,
"c" : valuec
}

而不是

{
 "a": {"a": valuea, "b": valueb},
 "c": valuec
}
bd1hkmkf

bd1hkmkf1#

您可以为属性编写自定义JsonConverter。
或者,一个更hacky的解决方案:

class A{ 
  public int A{get;set;}
  public int B{get;set;}
}

class B
{
 [JsonIgnore]
 public A ClassA {get; set;}
 [JsonProperty]
 int A => ClassA.A;
 [JsonProperty]
 int B => ClassA.B;
 public int C {get;set;}
}

这将导致序列化程序忽略Class A属性,但包含私有属性A和B,这将从Class A获取值。

相关问题