Java怎么拼接JSON?

在Java中拼接JSON,推荐使用第三方库如Jackson、Gson或Fastjson,通过创建JSONObject对象,调用put方法添加键值对,最后用toString()生成字符串,避免手动拼接字符串,防止格式错误或转义问题,JSONObject obj = new JSONObject(); obj.put(“key”, “value”); String json = obj.toString();

在Java中拼接JSON是开发中常见需求,尤其在与API交互或数据存储时,以下是5种主流方法详解,根据效率、安全性和可维护性推荐选择:

Java怎么拼接JSON?


手动拼接字符串(仅适用于简单场景)

String json = "{"name":"张三","age":25,"isStudent":true}";

风险:易出错、难维护、无转义处理,不推荐生产环境使用。


使用 org.json 库(官方轻量级方案)

Maven依赖

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20251013</version>
</dependency>

示例代码

JSONObject obj = new JSONObject();
obj.put("name", "张三");
obj.put("age", 25);
obj.put("isStudent", true);
obj.put("skills", new JSONArray().put("Java").put("SQL"));
System.out.println(obj.toString());
// 输出:{"name":"张三","age":25,"isStudent":true,"skills":["Java","SQL"]}

优点:无需复杂配置,直接处理数据类型
缺点:嵌套复杂JSON时代码冗长


使用 Gson(Google出品,推荐首选)

Maven依赖

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>

示例代码

JsonObject obj = new JsonObject();
obj.addProperty("name", "张三");
obj.addProperty("age", 25);
JsonArray skills = new JsonArray();
skills.add("Java");
skills.add("SQL");
obj.add("skills", skills);
System.out.println(new Gson().toJson(obj));
// 输出:{"name":"张三","age":25,"skills":["Java","SQL"]}

进阶用法(对象直接转换)

Java怎么拼接JSON?

class User {
    String name;
    int age;
    List<String> skills;
    // 构造方法/getter/setter省略
}
User user = new User("张三", 25, Arrays.asList("Java","SQL"));
String json = new Gson().toJson(user); // 自动转换对象

优势

  1. 类型安全自动转换
  2. 支持复杂嵌套结构
  3. 性能优异(Google维护)

使用 Jackson(Spring生态默认库)

Maven依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>

示例代码

ObjectMapper mapper = new ObjectMapper();
ObjectNode obj = mapper.createObjectNode();
obj.put("name", "张三");
obj.put("age", 25);
obj.putArray("skills").add("Java").add("SQL");
System.out.println(mapper.writeValueAsString(obj));

对象转换

String json = mapper.writeValueAsString(user); // 自动序列化POJO

适用场景

  • Spring Boot项目(默认集成)
  • 需要处理YAML/XML等多格式数据

Fastjson(阿里高性能库)

Maven依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>2.0.34</version>
</dependency>

示例代码

Java怎么拼接JSON?

JSONObject obj = new JSONObject();
obj.put("name", "张三");
obj.put("age", 25);
obj.put("skills", Arrays.asList("Java","SQL"));
System.out.println(JSON.toJSONString(obj));

性能特点

  • 序列化速度领先(实测比Gson快30%)
  • 注意:需关注版本安全(历史漏洞需升级到2.x)

选择建议

场景 推荐方案 理由
新项目 Gson 语法简洁、Google长期维护
Spring生态项目 Jackson 默认集成、生态兼容性好
高性能要求 Fastjson 2.x 极致速度(需确保版本安全)
简单工具类 org.json 无依赖场景轻量使用

安全规范

  1. 防注入:对用户输入值用JSONObject.escape()转义
  2. 空值处理
    obj.put("email", user.getEmail() != null ? user.getEmail() : JSONObject.NULL);
  3. 日期格式化(Gson示例):
    Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();

性能对比(10万次序列化)

  1. Fastjson 2.x:≈120ms
  2. Jackson:≈180ms
  3. Gson:≈220ms
  4. org.json:≈350ms

    数据来源:JMH基准测试(JDK17)


最佳实践总结

优先选库:避免手动拼接,用Gson/Jackson减少错误
对象映射:直接序列化POJO(如new Gson().toJson(user)
统一格式:用JsonBuilder设置全局日期/空值策略
弃用:Fastjson 1.x(已停更,存在安全风险)

引用说明

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/45826.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年7月4日 20:39
下一篇 2025年7月4日 20:45

相关推荐

  • Java界面插入图片的具体步骤和方法是什么?

    在Java界面中插入图片,可以通过多种方式实现,以下是一些常见的方法和步骤:使用ImageIcon类引入图片资源:确保你的图片文件与Java源文件位于同一目录下,或者提供正确的图片路径,创建ImageIcon对象:使用ImageIcon类创建一个图片对象,设置图片到组件:将图片对象设置到需要显示图片的组件上,如……

    2025年9月15日
    100
  • Java代码中如何自动添加空格,实现代码格式化?

    在Java编程中,自动添加空格到字符串中是一个常见的需求,尤其是在处理格式化输出或者构建JSON字符串时,以下是一些在Java中实现自动添加空格的方法:使用字符串连接最简单的方法是使用字符串连接符(+)将空格添加到字符串中,这种方法适用于简单的字符串操作,但在处理大量数据时可能会影响性能,String resu……

    2025年9月14日
    200
  • java怎么运行其他jar包

    Java中运行其他JAR包可以使用java -jar命令,要运行名为example.jar的JAR包,可以在命令行中输入:`java -jar example.

    2025年7月18日
    200
  • java web 怎么devug

    va Web调试可用IDE工具设断点、查变量;结合日志定位问题;前后端分别用对应模式开发;还可单元测试及借助调试代理

    2025年8月22日
    200
  • java 怎么创建线程

    Java中,创建线程主要有四种方式:继承Thread类、实现Runnable接口、实现Callable接口或使用线程池

    2025年8月21日
    100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN