Java中如何创建JSON?

在Java中创建JSON,常用库如org.json、Gson或Jackson,以org.json为例:先添加依赖,再通过new JSONObject().put("键","值")构建对象,调用toString()输出JSON字符串。

创建和操作JSON数据:Java高效实践指南

在现代Web开发和数据交换中,JSON已成为事实标准,本文将深入讲解如何通过Java生态系统的主流JSON库创建、解析和操作JSON数据,涵盖实际开发中最常用的三种解决方案。

Java中如何创建JSON?

▶ 三大主流JSON库对比

库名称 Maven依赖 核心优势 适用场景
org.json (JSON-Java) <dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20251013</version>
</dependency>
轻量级、无需配置 简单JSON操作
Gson (Google) <dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
对象映射强大 POJO与JSON转换
Jackson <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.3</version>
</dependency>
高性能、功能全面 企业级应用

▶ 创建JSON对象实战

<div class="method">
    <h3>方法1:org.json基础操作</h3>
    <pre><code class="language-java">import org.json.JSONObject;

// 创建空JSON对象
JSONObject user = new JSONObject();

// 添加基本属性
user.put(“name”, “张三”);
user.put(“age”, 28);
user.put(“isSubscribed”, true);

// 添加嵌套对象
JSONObject address = new JSONObject();
address.put(“city”, “北京”);
address.put(“zipCode”, “100000”);
user.put(“address”, address);

// 添加数组
user.put(“skills”, new JSONArray()
.put(“Java”)
.put(“Spring Boot”)
.put(“SQL”));

// 生成JSON字符串
String jsonString = user.toString();

输出结果:

{
  "name": "张三",
  "age": 28,
  "isSubscribed": true,
  "address": {
    "city": "北京",
    "zipCode": "100000"
  },
  "skills": ["Java", "Spring Boot", "SQL"]
}

<div class="method">
    <h3>方法2:Gson对象映射</h3>
    <pre><code class="language-java">import com.google.gson.Gson;

class User {
String name;
int age;
Address address;
List<String> skills;

// 构造函数和getter/setter省略

class Address {
String city;
String zipCode;
}

Java中如何创建JSON?

// 通过POJO创建JSON
User userObj = new User(“李四”, 30,
new Address(“上海”, “200000”),
Arrays.asList(“Python”, “Django”));

Gson gson = new Gson();
String json = gson.toJson(userObj);

优势:自动处理复杂对象关系,减少手动拼接错误

<div class="method">
    <h3>方法3:Jackson流式API</h3>
    <pre><code class="language-java">import com.fasterxml.jackson.databind.node.JsonNodeFactory;

import com.fasterxml.jackson.databind.node.ObjectNode;

JsonNodeFactory factory = JsonNodeFactory.instance;

// 构建JSON节点树
ObjectNode product = factory.objectNode();
product.put(“productId”, “P1001”)
.put(“productName”, “无线耳机”)
.put(“price”, 299.99);

// 添加嵌套数组
ArrayNode features = factory.arrayNode();
features.add(“降噪功能”)
.add(“24小时续航”);
product.set(“features”, features);

// 转为JSON字符串
String json = product.toString();

Java中如何创建JSON?

适用场景:需要高性能处理大型JSON文档时

▶ 最佳实践与性能优化

⛔ 避免常见错误

  • 日期格式化问题:始终明确指定日期格式
    Gson gson = new GsonBuilder()
        .setDateFormat("yyyy-MM-dd HH:mm:ss")
        .create();
  • 空值处理策略:根据业务需求配置null值处理
    // Jackson中忽略null字段
    objectMapper.setSerializationInclusion(Include.NON_NULL);
<div class="tip-card">
    <h3>⚡ 性能优化技巧</h3>
    <ul>
        <li>重用ObjectMapper/Gson实例(线程安全)</li>
        <li>大型JSON使用Jackson流式API(JsonParser/JsonGenerator)</li>
        <li>启用预编译:Gson的TypeToken缓存</li>
    </ul>
</div>
<div class="tip-card">
    <h3>🔒 安全注意事项</h3>
    <ul>
        <li>禁用Jackson的FAIL_ON_UNKNOWN_PROPERTIES防止注入攻击</li>
        <li>解析前验证JSON结构完整性</li>
        <li>敏感字段使用@JsonIgnore注解排除</li>
    </ul>
</div>

▶ 高级应用场景

<div class="scenario">
    <h3>动态JSON构建</h3>
    <pre><code class="language-java">// 使用org.json动态合并JSON

JSONObject config = new JSONObject(“{“theme”:”dark”}”);
JSONObject updates = new JSONObject();
updates.put(“fontSize”, 14);
updates.put(“notifications”, true);

// 深度合并操作
config = mergeJSON(config, updates);

<div class="scenario">
    <h3>JSON Schema验证</h3>
    <pre><code class="language-java">// 使用Jackson实现Schema校验

JsonSchemaFactory schemaFactory = JsonSchemaFactory.byDefault();
JsonSchema schema = schemaFactory.getSchema(
new URL(“https://api.example.com/schemas/user.json”)
);

ProcessingReport report = schema.validate(
jsonParser.readValueAsTree()
);
if (!report.isSuccess()) {
// 处理验证错误
}

▶ 总结建议

  1. 简单场景:选用org.json,学习曲线平缓
  2. 对象映射:优先考虑Gson,POJO转换高效
  3. 企业应用:使用Jackson,性能与功能更均衡

根据2025年JVM生态调查报告,Jackson在大型项目采用率达68%,Gson占24%,org.json占7%,建议新项目直接采用Jackson以获得最佳生态支持。

参考资料


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

(0)
酷盾叔酷盾叔
上一篇 2025年6月6日 16:04
下一篇 2025年6月6日 16:16

相关推荐

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN