杰瑞科技汇

Java JSON字符串如何格式化?

Java JSON 格式化字符串

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

Java JSON字符串如何格式化?-图1
(图片来源网络,侵删)

使用 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(虽然不是标准库的一部分):

Java JSON字符串如何格式化?-图2
(图片来源网络,侵删)
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"
}

注意事项

  1. 首先需要在项目中添加相应的依赖(Maven/Gradle)
  2. 对于大型 JSON 文档,格式化可能会消耗较多内存
  3. 某些库可能需要处理特殊字符或转义序列
  4. 如果输入已经是格式化的 JSON,再次格式化可能会导致不必要的空行

选择哪种方法取决于你的项目需求、性能要求和已使用的库,Jackson 和 Gson 是功能最全面的选项,而 org.json 则更轻量级。

Java JSON字符串如何格式化?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇