Java JSON 格式化字符串
在 Java 中格式化 JSON 字符串有几种常用方法,以下是几种实现方式:

使用 Jackson 库
Jackson 是 Java 中最流行的 JSON 处理库之一:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
public class JsonFormatter {
public static String formatJson(String json) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
Object jsonObject = mapper.readValue(json, Object.class);
return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonObject);
}
}
使用 Gson 库
Google 的 Gson 库也是处理 JSON 的常用选择:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class JsonFormatter {
public static String formatJson(String json) {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Object jsonObject = gson.fromJson(json, Object.class);
return gson.toJson(jsonObject);
}
}
使用 org.json 库
这是一个轻量级的 JSON 处理库:
import org.json.JSONObject;
import org.json.JSONArray;
public class JsonFormatter {
public static String formatJson(String json) throws Exception {
Object obj = json.startsWith("[") ? new JSONArray(json) : new JSONObject(json);
return obj.toString(2); // 2 表示缩进2个空格
}
}
使用 Java 11+ 的内置 JSON API
Java 11 引入了内置的 JSON API(虽然不是标准库的一部分):

import javax.json.Json;
import javax.json.JsonReader;
import javax.json.JsonWriter;
import java.io.StringReader;
import java.io.StringWriter;
public class JsonFormatter {
public static String formatJson(String json) {
JsonReader reader = Json.createReader(new StringReader(json));
Object jsonObject = reader.read();
StringWriter stringWriter = new StringWriter();
JsonWriter writer = Json.createWriter(stringWriter);
writer.write(jsonObject);
return stringWriter.toString();
}
}
使用示例
public class Main {
public static void main(String[] args) {
String json = "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}";
try {
String formattedJson = JsonFormatter.formatJson(json);
System.out.println(formattedJson);
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出示例
方法都会输出类似以下的格式化 JSON:
{
"name" : "John",
"age" : 30,
"city" : "New York"
}
注意事项
- 首先需要在项目中添加相应的依赖(Maven/Gradle)
- 对于大型 JSON 文档,格式化可能会消耗较多内存
- 某些库可能需要处理特殊字符或转义序列
- 如果输入已经是格式化的 JSON,再次格式化可能会导致不必要的空行
选择哪种方法取决于你的项目需求、性能要求和已使用的库,Jackson 和 Gson 是功能最全面的选项,而 org.json 则更轻量级。

