# json4bean **Repository Path**: angryid/json4bean ## Basic Information - **Project Name**: json4bean - **Description**: 超轻量级Json4Bean工具包(小于30k),为Api接口联调而生,源码不依赖任何第三方jar包 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 138 - **Forks**: 46 - **Created**: 2016-07-29 - **Last Updated**: 2024-11-30 ## Categories & Tags **Categories**: json-tools **Tags**: None ## README #json4bean --- **技术讨论 QQ 群 592835013(捧个人场)** 超轻量级Json4Bean工具包(小于30k),源码不依赖任何第三方jar包,可扩展 特点: 超轻量级Json4Bean工具包(小于30k),源码不依赖任何第三方jar包 方法与功能: JSON.writeBean方法(生成非赋值) 根据传入json参数生成javaBean实体 支持自定义生成javaBean包名 支持自定义生成javaBean模式(嵌套内部类或外部类) 支持自定义生成javaBean代码注释模板 JSON.parseObject方法(赋值非生成) 把Json字符串转为javaBean对象 JSON.toJsonString方法 把javaBean对象转为字符串 Maven 坐标 ``` com.javaear json4bean 0.2.0 ``` 演示 DEMO ``` 示例代码 package com.javaear.json4bean; import com.javaear.test.Student; import java.io.File; public class Json4BeanTest { /* 测试json 数据 */ static String data = "[{\n" + " \"id\": 123,\n" + " \"name\": \"张三\",\n" + " \"firend\": {\n" + " \"fid\": \"f123\",\n" + " \"fname\": \"李四\"\n" + " },\n" + " \"subjects\": [\n" + " {\n" + " \"sid\": \"o123\",\n" + " \"sname\": \"王五\"\n" + " },\n" + " {\n" + " \"sid\": \"o124\",\n" + " \"sname\": \"马六\"\n" + " }\n" + " ]\n" + "}]"; public static void main(String[] args) { //JSON.setWriteMultiBean(true); //去掉此注释,生成javabean为多个对象,非内部类形式 //默认生成内部类JavaBean,可以通过去掉上边一行注释选择非内部类形式 writeBeanSimpleTest(); writeBeanWithPackageNameTest(); writeBeanWithPackageNameAndCodeTemplateTest(); parseObjectTest(); toJsonStringTest(); } /** * 极简生成测试 */ public static void writeBeanSimpleTest(){ JSON.writeBean(data, "Student"); } /** * 附带pageckName生成测试 */ public static void writeBeanWithPackageNameTest(){ JSON.writeBean(data, "Student", "com.javaear.test"); } /** * 附带pageckName、注释模板、生成测试 */ public static void writeBeanWithPackageNameAndCodeTemplateTest(){ JSON.setCodeTemplate(System.getProperty("user.dir") + File.separator + "json4bean/src/test/resources/code-template.txt"); JSON.writeBean(data, "Student", "com.javaear.test", System.getProperty("user.dir") + File.separator + "json4bean/src/test/java/" + "com/javaear/test"); } /** * 解析json字符串为bean测试 */ public static void parseObjectTest(){ Student student = JSON.parseObject(data, Student.class); System.out.println( "id为:"+student.getId()+ "name为:"+student.getName()+ "firend name为:"+student.getFirend().getFname()+ "subject 2 sname为:"+student.getSubjects().get(1).getSname()); } /** * 解析bean为Json测试 */ public static void toJsonStringTest(){ //调用parse方法赋值的对象 Student student = JSON.parseObject(data, Student.class); //解析bean为字符串 String str = JSON.toJsonString(student); System.out.println(str); } } 生成效果 /* * Copyright 2016-2016 Javaear Group Holding Ltd. */ package com.javaear.test; import java.util.List; /** * @author aooer */ public class Student { private Long id; private String name; private Firend firend; private List subjects; public static class Firend { private String fid; private String fname; /** * @return fid */ public String getFid() { return this.fid; } /** * @param fid fid */ public void setFid(String fid) { this.fid = fid; } /** * @return fname */ public String getFname() { return this.fname; } /** * @param fname fname */ public void setFname(String fname) { this.fname = fname; } } public static class Subjects { private String sid; private String sname; /** * @return sid */ public String getSid() { return this.sid; } /** * @param sid sid */ public void setSid(String sid) { this.sid = sid; } /** * @return sname */ public String getSname() { return this.sname; } /** * @param sname sname */ public void setSname(String sname) { this.sname = sname; } } /** * @return id */ public Long getId() { return this.id; } /** * @param id id */ public void setId(Long id) { this.id = id; } /** * @return name */ public String getName() { return this.name; } /** * @param name name */ public void setName(String name) { this.name = name; } /** * @return firend */ public Firend getFirend() { return this.firend; } /** * @param firend firend */ public void setFirend(Firend firend) { this.firend = firend; } /** * @return subjects */ public List getSubjects() { return this.subjects; } /** * @param subjects subjects */ public void setSubjects(List subjects) { this.subjects = subjects; } } ``` ### 功能 √表示已支持、×表示暂未支持 1. 根据json字符串生成javaBean对象√ 2. 根据业务需要,后续会提供支持生成三种JavaBean选择 - DTO 数据传输对象,多用于Api接口联调对接使用,对代码美化度、格式无硬性要求√ - Model 数据模型,对Java开发者友好的字段排序方式√ - DO 数据库持久层使用对象√ 3. 代码模板支持,比如getter setter自定义注释,类注释等√ 4. JsonArray生成JavaBean对象√ 5. Json字符串json value为Null 生成提示检查是否有空值√ 6. Json字符串内嵌的对象,生成多个独立的JavaBean√ 7. 支持json字符串转javaBean对象(给已有的JavaBean对象复制)√ 8. 支持javaBean对象转json字符串√ ### 人群 1. 经常进行api接口联调对接的java开发者,由于接口提供者未提供sdk包,对接人员经常需要根据request、response的json示例去写javaBean,这种大量重复且枯燥的工作,完全可以用json4bean轻松搞定。 ^ _ ^ 2.其他需要根据json生成javaBean的不明真相的吃瓜群众。 ^ _ ^