我有一个紧凑的JSON字符串,并且希望在Java中漂亮地格式化它,而无需先反序列化它 - 就像jsonlint.org所做的那样。是否有任何库可以提供此功能?
对于XML的类似解决方案也很不错。
我有一个紧凑的JSON字符串,并且希望在Java中漂亮地格式化它,而无需先反序列化它 - 就像jsonlint.org所做的那样。是否有任何库可以提供此功能?
对于XML的类似解决方案也很不错。
int spacesToIndentEachLevel = 2;
new JSONObject(jsonString).toString(spacesToIndentEachLevel);
使用内置于JavaEE和Android的org.json.JSONObject
org.json:json:20090211
? - Andreworg.json.JSONObject
不是JavaEE内置的。用于JsonObject
的JSON-P
库是javax.json.JsonObject
。 - Buhake Sindi使用gson。https://www.mkyong.com/java/how-to-enable-pretty-print-json-output-gson/
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(my_bean);
输出
{
"name": "mkyong",
"age": 35,
"position": "Founder",
"salary": 10000,
"skills": [
"java",
"python",
"shell"
]
}
使用Gson的另一种方式:
String json_String_to_print = ...
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();
return gson.toJson(jp.parse(json_String_to_print));
当您没有豆子时,可以像susemi99的帖子中那样使用它。
JsonParser
现已弃用。请改用静态方法 JsonParser.parseString(json_String_to_print)
。 - kousen如果你正在使用jackson,你可以通过在ObjectMapper
中配置SerializationFeature
轻松实现这一点:
com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
mapper.writeValueAsString(<yourObject>);
就是这样。
<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));
toString(int)
方法,可以提供间隔以进行漂亮的打印输出。 - Buhake Sindi