在深入理解 JSON 的核心数据类型(string、number、boolean、null 等)与数据结构(Object、Array)后,如何高效、灵活地生成符合规范的 JSON 数据是实战环节的核心需求。相比原生 JSONObject 逐一键值对构建 JSON 的方式,Google 开源的 GSON 框架凭借对 Java 数据类型与 JSON 数据类型的自动映射能力,成为企业级开发中生成 JSON 的首选方案 —— 它既能精准适配 JSON 的各类数据类型与结构规范,又支持自定义序列化规则,满足复杂业务场景下的个性化需求。接下来我们将通过完整的代码案例,详解如何基于 Java Bean 结合 GSON 框架生成 JSON 数据,进一步吃透 JSON 数据类型与结构在实际开发中的落地应用。
代码演示:
package com.myimooc.json.gson;
import com.google.gson.FieldNamingStrategy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.myimooc.json.model.Diaosi;
import java.lang.reflect.Field;
/**
* 使用 GSON 进行 JSON 相关操作
* Created by ChangComputer on 2017/5/21.
*/
public class GsonCreateSample {
public static void main(String[] args) {
createJsonByGsonBean();
}
/**
*
* 通过 JavaBean 生成JSON【推荐使用】
*/
private static void createJsonByGsonBean() {
Diaosi wangxiaoer = new Diaosi();
wangxiaoer.setName("王小二");
wangxiaoer.setAge(25.2);
wangxiaoer.setBirthday("1990-01-01");
wangxiaoer.setSchool("蓝翔");
wangxiaoer.setMajor(new String[]{"理发","挖掘机"});
wangxiaoer.setHas_girlfriend(false);
wangxiaoer.setCar(null);
wangxiaoer.setHouse(null);
wangxiaoer.setComment("这是一个注释");
wangxiaoer.setIgnore("不要看见我");
GsonBuilder gsonBuilder = new GsonBuilder();
// 设置格式化输出
gsonBuilder.setPrettyPrinting();
// 自定义转换策略
gsonBuilder.setFieldNamingStrategy(new FieldNamingStrategy() {
@Override
public String translateName(Field f) {
if(f.getName().equals("name")){
return "NAME";
}
return f.getName();
}
});
// 生成Gson
Gson gson = gsonBuilder.create();
System.out.println(gson.toJson(wangxiaoer));
}
}
name(String)对应 JSON 的 string 类型、age(double)对应 JSON 的 number 类型、has_girlfriend(boolean)对应 JSON 的 boolean 类型、major(String 数组)对应 JSON 的 Array 结构、car/house(null)对应 JSON 的 null 类型,完全遵循 JSON 数据类型规范,无需手动处理类型转换;从结构层面,Java Bean 的键值对结构与 JSON 的 Object 对象({})天然适配,数组属性则直接转化为 JSON 的 Array 结构([]),精准契合 JSON 的核心数据结构规则。此外,GsonBuilder 的配置进一步拓展了 JSON 生成的灵活性 —— 格式化输出让 JSON 结构更易读,自定义字段命名策略可满足业务对字段格式的特殊要求(如将name转为大写NAME)。相比原生方式,GSON 基于 Java Bean 的生成模式不仅更符合面向对象开发逻辑,还能大幅减少重复编码,同时对 null 值、数组等易出问题的 JSON 类型处理更稳定。掌握这种生成方式,不仅能巩固 JSON 数据类型与结构的理论认知,更能直接应用到实际项目中,应对各类复杂的 JSON 生成场景。正在加载... ...