使用 java 漂亮打印 JSON,不格式化值
pretty print JSON using java, without formatting the values
我知道大多数 Java json 图书馆都可以通过
进行漂亮的打印
- 解析为通用模型,然后
- 序列化模型。
Whosebug 上存在无穷无尽的问题,这些问题告诉您使用 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”[=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。
我知道大多数 Java json 图书馆都可以通过
进行漂亮的打印- 解析为通用模型,然后
- 序列化模型。
Whosebug 上存在无穷无尽的问题,这些问题告诉您使用 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”[=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。