You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为提取的JSON数据应用prettyPrint格式化输出?

JSON提取结果格式化输出解决方案

问题根源

  • 最初写法中,json.getString("projects[1]")返回的是普通字符串,String类没有prettyPrint()方法,因此调用无效。
  • 后续尝试Gson时,直接将字符串传入toJson(),Gson会把它当作普通文本转义输出,而非解析为JSON结构后格式化。

可行方案

方案1:利用JsonPath内置格式化功能

直接获取JSON节点对象,使用JsonPath自带的格式化工具输出:

Response response = basicAuth.accept(ContentType.JSON).get(uri);
ResponseBody body = response.getBody();
JsonPath json = new JsonPath(body.asString());
// 获取JSON节点对象而非字符串
Object projectNode = json.get("projects[1]");
// 用JsonPath的格式化功能生成美观的JSON字符串
String prettyJson = JsonPath.parse(projectNode).jsonString(JsonFormatting.PRETTY);

System.out.println("I extracted this project " + prettyJson);

方案2:通过Gson正确解析后格式化

先将提取的JSON字符串解析为JSON元素,再用带格式化配置的Gson输出:

Response response = basicAuth.accept(ContentType.JSON).get(uri);
ResponseBody body = response.getBody();
JsonPath json = new JsonPath(body.asString());
// 获取原始JSON结构字符串
String projectJsonStr = json.getString("projects[1]");
// 解析为JsonElement
Gson gson = new Gson();
JsonElement projectElement = gson.fromJson(projectJsonStr, JsonElement.class);
// 配置Gson为格式化模式并输出
Gson prettyGson = new GsonBuilder().setPrettyPrinting().create();
String prettyJson = prettyGson.toJson(projectElement);

System.out.println("I extracted this project " + prettyJson);

方案3:简化版Gson用法

直接将JsonPath获取的节点对象传给Gson格式化,省去字符串解析步骤:

Response response = basicAuth.accept(ContentType.JSON).get(uri);
ResponseBody body = response.getBody();
JsonPath json = new JsonPath(body.asString());
Object projectNode = json.get("projects[1]");
Gson prettyGson = new GsonBuilder().setPrettyPrinting().create();
String prettyJson = prettyGson.toJson(projectNode);

System.out.println("I extracted this project " + prettyJson);

内容的提问来源于stack exchange,提问作者GetTok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:07:19