首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JSON字符串和java对象的互转【json-lib】

JSON字符串和java对象的互转【json-lib】

原创
作者头像
用户3672714
发布2025-08-09 15:26:28
发布2025-08-09 15:26:28
13700
代码可运行
举报
运行总次数:0
代码可运行

1. 什么是 json-lib

json-lib 是一个老牌 Java JSON 处理库,可以方便地在 Java 对象和 JSON 字符串之间互转。 虽然现在更流行的库有 Jackson、Gson,但 json-lib 依然在一些遗留项目中使用。


2. 引入依赖

Maven 依赖

代码语言:javascript
代码运行次数:0
运行
复制
<dependency>    <groupId>net.sf.json-lib</groupId>    <artifactId>json-lib</artifactId>    <version>2.4</version>    <classifier>jdk15</classifier></dependency>php165 Bytes© 菜鸟-创作你的创作

注意

json-lib 依赖以下库,需确保也引入:

  • commons-lang
  • commons-beanutils
  • commons-collections
  • commons-logging

3. 核心类

  • JSONObject — 代表 JSON 对象
  • JSONArray — 代表 JSON 数组
  • JsonConfig — 配置序列化/反序列化行为

4. Java 对象转 JSON 字符串

示例代码

假设有个简单的 Java 类:

代码语言:javascript
代码运行次数:0
运行
复制
public class User {    private String name;    private int age;    // getter/setter    public String getName() { return name; }    public void setName(String name) { this.name = name; }    public int getAge() { return age; }    public void setAge(int age) { this.age = age; }}php285 Bytes© 菜鸟-创作你的创作

转换示例:

代码语言:javascript
代码运行次数:0
运行
复制
import net.sf.json.JSONObject;public class JsonLibDemo {    public static void main(String[] args) {        User user = new User();        user.setName("小明");        user.setAge(18);        JSONObject json = JSONObject.fromObject(user);        String jsonString = json.toString();        System.out.println(jsonString);    }}php338 Bytes© 菜鸟-创作你的创作

输出:

代码语言:javascript
代码运行次数:0
运行
复制
{"age":18,"name":"小明"}php22 Bytes© 菜鸟-创作你的创作

5. JSON 字符串转 Java 对象

代码语言:javascript
代码运行次数:0
运行
复制
import net.sf.json.JSONObject;public class JsonLibDemo {    public static void main(String[] args) {        String jsonString = "{\"age\":18,\"name\":\"小明\"}";        JSONObject json = JSONObject.fromObject(jsonString);        User user = (User) JSONObject.toBean(json, User.class);        System.out.println(user.getName()); // 小明        System.out.println(user.getAge());  // 18    }}php398 Bytes© 菜鸟-创作你的创作

6. 处理集合类

Java 集合转 JSONArray

代码语言:javascript
代码运行次数:0
运行
复制
import net.sf.json.JSONArray;import java.util.ArrayList;import java.util.List;List<User> userList = new ArrayList<>();userList.add(user1);userList.add(user2);JSONArray jsonArray = JSONArray.fromObject(userList);System.out.println(jsonArray.toString());php261 Bytes© 菜鸟-创作你的创作

JSONArray 转 List

代码语言:javascript
代码运行次数:0
运行
复制
JSONArray jsonArray = JSONArray.fromObject(jsonString);List<User> users = (List<User>) JSONArray.toCollection(jsonArray, User.class);php134 Bytes© 菜鸟-创作你的创作

7. 注意事项

  • 日期处理 默认日期格式会被序列化为时间戳,可以使用 JsonConfig 自定义日期格式。
  • 循环引用 如果对象间存在循环引用,json-lib 可能会报错。
  • 性能 json-lib 较老,性能和兼容性不如 Jackson 和 Gson。

8. 代码示例(含日期格式化)

代码语言:javascript
代码运行次数:0
运行
复制
import net.sf.json.JSONObject;import net.sf.json.JsonConfig;import net.sf.json.util.CycleDetectionStrategy;import java.text.SimpleDateFormat;import java.util.Date;public class JsonLibDateDemo {    public static void main(String[] args) {        JsonConfig jsonConfig = new JsonConfig();        jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);        jsonConfig.registerJsonValueProcessor(Date.class, (value, jsonConfig1) -> {            if (value == null) return "";            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");            return sdf.format(value);        });        MyBean bean = new MyBean();        bean.setDate(new Date());        JSONObject json = JSONObject.fromObject(bean, jsonConfig);        System.out.println(json.toString());    }}class MyBean {    private Date date;    public Date getDate() { return date; }    public void setDate(Date date) { this.date = date; }}php962 Bytes© 菜鸟-创作你的创作

https://www.52runoob.com/archives/5532

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 什么是 json-lib
  • 2. 引入依赖
    • Maven 依赖
    • 注意
  • 3. 核心类
  • 4. Java 对象转 JSON 字符串
    • 示例代码
  • 5. JSON 字符串转 Java 对象
  • 6. 处理集合类
    • Java 集合转 JSONArray
    • JSONArray 转 List
  • 7. 注意事项
  • 8. 代码示例(含日期格式化)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档