使用Java漂亮地打印JSON,而无需格式化值

时间:2018-08-10 08:17:43

标签: java json jackson pretty-print

我知道大多数Java json库都可以通过

打印
  • 先解析为通用模型,然后
  • 序列化模型。

StackOverflow上存在无尽的现有问题,这些问题告诉您使用Jackson或GSON以这种方式漂亮地打印json,例如Pretty-Print JSON in Java

但是,我发现使用Jackson ObjectMapper可以做到这一点,如果我有十进制值(例如“ 10000.00”),它将把它们解析为BigDecimal或Double,最后将其写为“ 10000.0”(double)或“ 1E + 4”(BigDecimal)。

我想要的是一种格式化JSON的方式,该方式仅影响空格,并且不会干扰任何值的内容-如果输入为“ 10000.00”,则输出必须为“ 10000.00”

有人知道可以处理该问题的Java JSON库吗?

2 个答案:

答案 0 :(得分:1)

Underscore-java库具有静态方法U.formatJson(json)。它将保留双精度值。 12.0将被格式化为12.0。我是该项目的维护者。

答案 1 :(得分:-1)

JSON {"value":5.0}{"value":"5.0"}之间存在区别,在第二种情况下,"5.0"值将被视为String,并且不会被修改。在第一种情况下,它将被检测为数值型并且可以修改。因此,要么要求您的JSON带有数字值,要么在解析JSON字符串之前在您的代码中自己做。另外,如果您自己从某个对象生成JSON,则您拥有

private Double myValue;

有吸气剂

@JsonIgnore
Double getMyValue() {
  return myValue;
}

并添加另一个吸气剂

  @JsonProperty(name="myValue")
  String getMyValueStr() {
    return myValue.toString();
  }

所有注释均针对Jason-Jackson。