java Jackson2.14:序列化强制转换为字符串的所有字段

zyfwsgd6  于 2023-03-16  发布在  Java
关注(0)|答案(2)|浏览(159)

在最新的Jackson2.14中,您不能使用已弃用的WRITE_NUMBERS_AS_STRINGS

ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS, true); // DEPRECATED!

此外,您不能使用@JsonSerialize(using = ToStringSerializer.class)

这些都是this thread中提供的建议。那么我们现在如何在最新的Jackson中将字段转换为字符串呢?如果能提供一些例子,我将不胜感激,因为我找不到任何例子。

rpppsulh

rpppsulh1#

你可以试着把一个方法设置为你的值的setter。这个方法然后把你的整数转换成字符串。

public static void main(String[] args) throws JsonProcessingException {
    ObjectMapper mapper = new ObjectMapper();

    String json = "{\"number\": 1}";
    Model model = mapper.readValue(json, Model.class);
    System.out.println(model.getNumber());
}

public class Model {
  private String number;

  public void setNumber(@JsonProperty("number") Integer number) {
    this.number = Integer.toString(number);
  }

  public String getNumber() {
    return number;
  }
}
wfsdck30

wfsdck302#

我找到了新的约定,现在叫做JsonWriteFeature.WRITE_NUMBERS_AS_STRING),而且.configure()需要放在JsonMapper.builder()之后。

ObjectMapper mapper = JsonMapper.builder()
                                    .configure(JsonWriteFeature.WRITE_NUMBERS_AS_STRINGS, true) 
                                    .build();

相关问题