Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用POJO重新映射Json属性_Java_Json_Pojo - Fatal编程技术网

Java 使用POJO重新映射Json属性

Java 使用POJO重新映射Json属性,java,json,pojo,Java,Json,Pojo,我有一个POJO: SampleDto.java @Data public class SampleDto{ private String A; private String B; private String C; @JsonProperty("E") private String D; } 我正在映射这些数据: {A: 1, B: 2, C: 3, E: 4} 当我在终端打印pojo时,我看到: SampleDto(A=1, B=2, C=3, D

我有一个POJO:

SampleDto.java

@Data
public class SampleDto{
  private String A;
  private String B;
  private String C;
  @JsonProperty("E")
  private String D;
}
我正在映射这些数据:

{A: 1, B: 2, C: 3, E: 4}
当我在终端打印pojo时,我看到:

SampleDto(A=1, B=2, C=3, D=4)
但当我用邮递员打印出来时,我看到:

[
  {
    "A": 1,
    "B": 2,
    "C": 3,
    "E": 4
  }
]
为什么邮递员输出和终端输出之间存在差异

我希望我的邮递员输出反映为:

    [
      {
        "A": 1,
        "B": 2,
        "C": 3,
        "D": 4
      }
    ]

您在这里看到的问题可能是因为您误解了序列化与串接

无论何时用Java打印对象,它都会尝试调用该对象上的toString方法。如果您使用的是System.out.printX(…)

而您的@Property注释可能会被提供给某个序列化程序/映射程序,并生成JSON。可能是jackson和ObjectMapper


这种行为是正常的,是有意义的,因为标准打印方法不知道诸如@Property之类的注释。如果需要此POJO将“D”替换为“E”,那么您可以覆盖对象上的toString方法。

我正在bodyToFlux(SampleDto.class)中进行映射,因此如果我有错误,请更正我,但这些值不会附加到属性,因此当您返回通量时,它应该使用SampleDto.java的属性?从pojoan中删除
@JsonProperty(“E”)
,这对我有什么帮助?这将导致我看到“D”:null,我不希望这样。我想将“E”映射到“D”并显示为“D”