MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

Java中几种不同JSON框架的对比(java和json的区别)

2025-06-09 22:25 huorong 精选文章 1 ℃ 0 评论

整体对比结果

框架

性能

易用性

安全性

特点

依赖大小

Jackson

SpringBoot默认,功能最全面

1.2MB

Gson

Google出品,API极简

700KB

Fastjson

(序列化)

阿里系,中文处理快,高危漏洞多

2.4MB

JSON-B

Jakarta EE标准,与XML统一

1.1MB

Hutool JSON

国产工具集,零依赖,API极简


不同框架序列化实现

Jackson

// 序列化
ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);  // 美化输出
String json = mapper.writeValueAsString(user);

// 反序列化
User user = mapper.readValue(json, User.class);

// 注解示例
public class User {
    @JsonProperty("user_name")
    private String name;
    @JsonIgnore
    private String password;
}

Gson

// 序列化
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(user);

// 反序列化
User user = gson.fromJson(json, User.class);

// 自定义适配器
Gson gson = new GsonBuilder()
    .registerTypeAdapter(LocalDateTime.class, new LocalDateTimeAdapter())
    .create();

Fastjson

// 序列化
String json = JSON.toJSONString(user, SerializerFeature.PrettyFormat);

// 反序列化
User user = JSON.parseObject(json, User.class);

// JSONPath查询
String name = (String) JSONPath.eval(json, "$.user.name");

JSON-B (Yasson实现)

// 序列化
Jsonb jsonb = JsonbBuilder.create();
String json = jsonb.toJson(user);

// 反序列化
User user = jsonb.fromJson(json, User.class);

// 注解示例
public class User {
    @JsonbProperty("full_name")
    private String name;
    @JsonbTransient
    private String password;
}


Hutool JSON

// 序列化(支持多种输入类型)
String json = JSONUtil.toJsonStr(user);

// 序列化(美化输出)
String prettyJson = JSONUtil.toJsonPrettyStr(user);

// 反序列化(到JavaBean)
User user = JSONUtil.toBean(json, User.class);

// 动态操作(无需定义Bean)
JSONObject jsonObj = JSONUtil.parseObj(json);
jsonObj.set("age", 30).set("address", "北京");

// XML转JSON
String json = JSONUtil.toJsonStr(XMLUtil.parseXml(xmlStr));

Tags:java jsonpath

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言