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

Java中使用String.format如何将JSON对象作为参数插入格式化字符串

Java中向字符串模板传入JSON对象的实现方法

这个需求完全可以实现,核心逻辑非常简单:String.format 本身没有为JSON类型设计专属占位符,所有非基础类型的参数传入后,都会自动调用对象的toString()方法转为字符串,再替换对应占位符。只要你传入的JSON对象能输出合法的JSON格式字符串,直接用%s占位符承接即可。


基础实现示例

你之前用%d承接十进制整数、%s承接字符串的写法可以直接复用,只需要把对应参数位置换成你构建好的JSON对象就行,以最常用的org.json库构建的JSONObject为例:

import org.json.JSONObject;

public class JsonInStringDemo {
    public static void main(String[] args) {
        // 构建自定义JSON载荷
        JSONObject jsonPayload = new JSONObject();
        jsonPayload.put("orderId", 32074);
        jsonPayload.put("payAmount", 99.9);
        jsonPayload.put("payStatus", "success");

        String template = "本次上报的支付载荷为:%s";
        // 直接传入JSON对象,%s会自动调用其重写后的toString()输出标准JSON
        String output = String.format(template, jsonPayload);
        System.out.println(output);
        // 打印结果:本次上报的支付载荷为:{"orderId":32074,"payAmount":99.9,"payStatus":"success"}
    }
}

如果你用的是Jackson的ObjectNode、Gson的JsonObject等其他JSON库实现的JSON对象,操作逻辑完全一致——这些库的JSON对象类都已经重写了toString()方法,默认输出标准无缩进的JSON字符串,不需要额外做转换。


常见场景处理

  • 如果需要输出带缩进的易读格式化JSON,可以调用JSON对象自带的缩进输出方法生成字符串后再传入,以org.json为例:
// 传入2表示每层缩进2个空格
String prettyJson = jsonPayload.toString(2);
String prettyOutput = String.format("格式化后载荷:\n%s", prettyJson);
/*
打印结果:
格式化后载荷:
{
  "orderId": 32074,
  "payAmount": 99.9,
  "payStatus": "success"
}
*/
  • 如果要传入的是自定义Java实体类,不要直接把实体对象传给%s——普通实体类默认的toString()不会输出JSON格式。需要先通过JSON库把实体序列化为JSON字符串,再传入模板:
import com.fasterxml.jackson.databind.ObjectMapper;

// 自定义实体类
Order order = new Order(32074, 99.9, "success");
ObjectMapper mapper = new ObjectMapper();
// 先序列化为JSON字符串
String orderJson = mapper.writeValueAsString(order);
String output = String.format("支付载荷:%s", orderJson);

注意事项

  • 不要手动硬编码拼接JSON字符串作为参数,很容易出现引号转义错误、JSON格式非法的问题,优先用成熟JSON库构建对象或做序列化。
  • 如果传入JSON对象后输出的内容不是合法JSON,先检查对应JSON类的toString()方法是否被正确重写,有没有被其他代理类修改逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:57:12