一、使用Gson库(推荐)

Gson是Google提供的轻量级JSON处理库,支持对象与JSON的快速双向转换。

Gson gson = new Gson();
String jsonString = gson.toJson(params);  // 对象转JSON字符串
JSONObject jsonObject = new JSONObject(jsonString);  // 字符串转JSONObject
  • 特性
    • 自动递归处理嵌套对象和集合。
    • 默认忽略null字段,可通过serializeNulls()配置保留空值。
  • 注解支持
    使用@SerializedName自定义JSON键名,例如:
public class User {
    @SerializedName("user_name")
    private String name;
}

二、使用Fastjson库

阿里开源的Fastjson以高性能著称,适合复杂JSON结构处理。

String jsonString = JSONObject.toJSONString(params);  // 对象转JSON字符串
JSONObject jsonObject = JSONObject.parseObject(jsonString);  // 字符串转JSONObject

空值处理
通过SerializerFeature控制空值行为,例如:

String json = JSON.toJSONString(params, 
    SerializerFeature.WriteMapNullValue,  // 保留空键
    SerializerFeature.WriteNullStringAsEmpty  // null转空字符串
);

三、使用Jackson库

Jackson适合需要精细控制序列化逻辑的场景(如动态过滤字段)。

ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(params);  // 对象转JSON字符串
JSONObject jsonObject = new JSONObject(jsonString);  // 字符串转JSONObject
  • 注解支持
    使用@JsonProperty定义字段映射关系。
public class User {
    @JsonProperty("user_name")  // 自定义JSON字段名
    private String name;

    @JsonIgnore  // 忽略该字段
    private String password;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")  // 日期格式化
    private Date createTime;

    @JsonInclude(Include.NON_NULL)  // 空值不序列化
    private String address;
}[2,6,7,10](@ref)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐