我有一个紧凑的JSON字符串,我希望在Java中很好地格式化它,而不必先将其反序列化 - 例如就像jsonlint.org一样。那里有没有提供这个的图书馆吗?
类似的XML解决方案也很不错。
答案 0 :(得分:64)
int spacesToIndentEachLevel = 2;
new JSONObject(jsonString).toString(spacesToIndentEachLevel);
使用org.json.JSONObject
(内置于JavaEE和Android)
答案 1 :(得分:10)
在一行中:
String niceFormattedJson = JsonWriter.formatJson(jsonString)
或
System.out.println(JsonWriter.formatJson(jsonString.toString()));
json-io libray(https://github.com/jdereg/json-io)是一个小型(75K)库,除了JDK之外没有其他依赖项。
除了漂亮打印JSON之外,您还可以将Java对象(带有循环的整个Java对象图)序列化为JSON,并将其读入。
答案 2 :(得分:6)
如果您使用的是jackson,可以通过在SerializationFeature
中配置ObjectMapper
轻松实现此目的:
com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
mapper.writeValueAsString(<yourObject>);
多数民众赞成。
答案 3 :(得分:6)
使用gson。 https://www.mkyong.com/java/how-to-enable-pretty-print-json-output-gson/
www.domain.com/app1
www.domain.com/app2
输出
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(my_bean);
答案 4 :(得分:4)
我认为对于漂亮的印刷品,了解其结构非常有帮助。
要获得结构,您需要parse它。因此,我认为它比首先解析你拥有的JSON字符串然后使用上面评论中提到的漂亮打印方法toString要容易得多。
当然,您可以使用您喜欢的任何JSON库。
答案 5 :(得分:1)
我想要一个非常简单的解决方案:
<dependency>
<groupId>com.cedarsoftware</groupId>
<artifactId>json-io</artifactId>
<version>4.5.0</version>
</dependency>
Java代码:
import com.cedarsoftware.util.io.JsonWriter;
//...
String jsonString = "json_string_plain_text";
System.out.println(JsonWriter.formatJson(jsonString));
答案 6 :(得分:1)
使用gson的另一种方法:
__str__
当你没有像susemi99的帖子那样拥有豆子时,可以使用它。
答案 7 :(得分:0)
Underscore-java库具有方法U.formatJson(json)
和U.formatXml(xml)
。我是该项目的维护者。