Java 简单 bean 与 json 互相转换
场景说明
最近在写一个服务,经常用到调别人接口得到json,然后需要转换为 指定bean,记录一下常用工具类
引入依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> </dependency>
示例
bean
@Data public class User { private Integer id; private String name; private List<String> books; }
转换
@Test public void testjson() { User user = new User(); user.setId(1001); user.setName("金庸"); ArrayList<String> books = new ArrayList<>(); books.add("飞"); books.add("雪"); books.add("连"); books.add("天"); books.add("射"); books.add("白"); books.add("🦌"); user.setBooks(books); //使用 fastjson bean2json String jsonStr = JSON.toJSONString(user); System.out.println(jsonStr); //使用 fastjson json2bean User user1 = JSONObject.parseObject(jsonStr, User.class); System.out.println(user1); //使用 hutool bean2json String jsonStr1 = JSONUtil.toJsonStr(user); System.out.println(JSONObject.parseObject(jsonStr1, User.class)); //使用 hutool json2bean System.out.println(JSONUtil.toBean(jsonStr1, User.class)); }
执行效果:
{"books":["飞","雪","连","天","射","白","🦌"],"id":1001,"name":"金庸"} User(id=1001, name=金庸, books=[飞, 雪, 连, 天, 射, 白, 🦌]) User(id=1001, name=金庸, books=[飞, 雪, 连, 天, 射, 白, 🦌]) User(id=1001, name=金庸, books=[飞, 雪, 连, 天, 射, 白, 🦌])
JSON数组
来一个 jsonarray
@Test public void testjsonArray() { ArrayList<User> users = new ArrayList<>(); User jiny = new User(); jiny.setId(1001); jiny.setName("金庸"); ArrayList<String> books = new ArrayList<>(); books.add("飞"); books.add("雪"); books.add("连"); books.add("天"); books.add("射"); books.add("白"); books.add("🦌"); jiny.setBooks(books); User gul = new User(); gul.setId(1002); gul.setName("古龙"); ArrayList<String> bookgl = new ArrayList<>(); bookgl.add("绝"); bookgl.add("萧"); bookgl.add("流"); bookgl.add("天"); bookgl.add("武"); bookgl.add("大"); bookgl.add("小"); gul.setBooks(bookgl); users.add(jiny); users.add(gul); //hu tool 工具包 String jsonStr = JSONUtil.toJsonStr(users); System.out.println(jsonStr); List<User> list = JSONUtil.toList(jsonStr, User.class); System.out.println(users); System.out.println(list); System.out.println("--------------"); //fastjson 工具包 String jsonString = JSON.toJSONString(users); System.out.println(jsonString); JSONArray jsonArray = JSONArray.parseArray(jsonString); List<User> javaList = jsonArray.toJavaList(User.class); System.out.println(javaList); }
执行效果
[{"books":["飞","雪","连","天","射","白","🦌"],"name":"金庸","id":1001},{"books":["绝","萧","流","天","武","大","小"],"name":"古龙","id":1002}] [User(id=1001, name=金庸, books=[飞, 雪, 连, 天, 射, 白, 🦌]), User(id=1002, name=古龙, books=[绝, 萧, 流, 天, 武, 大, 小])] [User(id=1001, name=金庸, books=[飞, 雪, 连, 天, 射, 白, 🦌]), User(id=1002, name=古龙, books=[绝, 萧, 流, 天, 武, 大, 小])] -------------- [{"books":["飞","雪","连","天","射","白","🦌"],"id":1001,"name":"金庸"},{"books":["绝","萧","流","天","武","大","小"],"id":1002,"name":"古龙"}] [User(id=1001, name=金庸, books=["飞","雪","连","天","射","白","🦌"]), User(id=1002, name=古龙, books=["绝","萧","流","天","武","大","小"])]