使用 java 漂亮打印 JSON,不格式化值

pretty print JSON using java, without formatting the values

我知道大多数 Java json 图书馆都可以通过

进行漂亮的打印

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

但是,我发现使用 Jackson ObjectMapper 来执行此操作时,如果我有十进制值,例如“10000.00”,它会将它们解析为 BigDecimal 或 Double,然后最终将其写为“10000.0”(double ) 或 "1E+4" (BigDecimal).

我想要的是一种格式化 JSON 的方法,它只影响空格,并且不会干扰任何值的内容 - 如果输入是“10000.00”,输出必须是“10000.00”[=13] =]

有人知道 Java JSON 库可以处理吗?

Underscore-java 库有静态方法 U.formatJson(json)。它将按原样保留 double 值。 12.0 将被格式化为 12.0.我是项目的维护者

JSONs {"value":5.0}{"value":"5.0"} 之间存在差异,在第二种情况下 "5.0" 值将被视为 String 而不会被修改。在第一种情况下,它将被检测为 Numerical 并且可能会被修改。因此,要么要求 JSON 引用数值,要么在解析 JSON 字符串之前在代码中自行完成。此外,如果您自己从某个对象生成 JSON,那么如果您有

private Double myValue;

有getter

@JsonIgnore
Double getMyValue() {
  return myValue;
}

并添加另一个 getter

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

所有注释均针对 Jason-Jackson。