如何在属性中使用Lombok定义JSON:@JsonPropertyOrder和@JsonIgnore(JAVA)

时间:2019-01-31 13:45:40

标签: java json lombok

我正在尝试将lombok与JSON一起使用,但出现了一些问题

  

当变量名称为时,Json不遵守顺序   与@JsonProperty不同。

(吸气剂可能有问题)

  

另一点是,我想将Object1的ID隐藏在   生成的json

@Data
@Builder(toBuilder = true)
@AllArgsConstructor(access = AccessLevel.PACKAGE)
@NoArgsConstructor(access = AccessLevel.PACKAGE)
@JsonPropertyOrder({ "id", "objectid", "value" })
public class Object1 {

@JsonIgnore
private Long id;

@JsonProperty("objectid")
private Long subid;

@JsonProperty("value")
private String value;

}

结果:

{
  "id" : 123,  <--- I want to hide
  "value" : "...",
  "objectid" : 123
}

“这是一个虚构的小类”

谢谢

2 个答案:

答案 0 :(得分:0)

要解决输出顺序,请尝试使用ObjectMapper,如下所示:

ObjectMapper om = new ObjectMapper();
String jsonString = om.writeValueAsString(myObject1);
System.out.println(jsonString);

要隐藏ID,您可以使用以下杰克逊注释:

@JsonIgnoreProperties(value = {"id"})

如果您仍然希望能够使用setter设置ID,请将此成员添加到注释中:

allowSetters = true

答案 1 :(得分:0)

您的代码可以正常工作... 您想获得什么结果? Your code