Json和JsonString之间互转总结

一、使用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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值