将JSON数据转换成Java的实体类

思路:首先将JSON格式的数据转换成JSONObject,然后将JSONObject转换成Java的实体类(其中类属性包括List等类型)

Java实体类:

SearchFilter 类
 1 public class SearchFilter {
 2     private String groupOp;
 3
 4     private List<SearchRule> rules;
 5
 6     public String getGroupOp() {
 7         return groupOp;
 8     }
 9
10     public void setGroupOp(String groupOp) {
11         this.groupOp = groupOp;
12     }
13
14     public List<SearchRule> getRules() {
15         return rules;
16     }
17
18     public void setRules(List<SearchRule> rules) {
19         this.rules = rules;
20     }
SearchRule 类:
 1 public class SearchRule {
 2     private String field;
 3     private String op;
 4     private String data;
 5     public String getField() {
 6         return field;
 7     }
 8     public void setField(String field) {
 9         this.field = field;
10     }
11     public String getOp() {
12         return op;
13     }
14     public void setOp(String op) {
15         this.op = op;
16     }
17     public String getData() {
18         return data;
19     }
20     public void setData(String data) {
21         this.data = data;
22     }
23
24
25 }

解析JSon格式字符串的方法

 1 public SearchFilter jsonToSearchFilter(String filters) {
 2         SearchFilter searchFilter = null;
 3         try {
 4             JSONObject jsonobject = JSONObject.fromObject(filters);//将json格式的字符串转换成JSONObject 对象
 5             JSONArray array = jsonobject.getJSONArray("rules");    //如果json格式的字符串里含有数组格式的属性,将其转换成JSONArray,以方便后面转换成对应的实体
 6             List<SearchRule> rules = new ArrayList<SearchRule>();
 7             for (int i = 0; i < array.size(); i++) {
 8                 JSONObject object = (JSONObject) array.get(i);     //将array中的数据进行逐条转换
 9                 SearchRule rule = (SearchRule) JSONObject.toBean(object, SearchRule.class);  //通过JSONObject.toBean()方法进行对象间的转换
10                 rules.add(rule);
11             }
12             String groupOp = jsonobject.getString("groupOp");  //简单的直接获取值
13             searchFilter = new SearchFilter();                 //对SearchFilter对象进行组装
14             searchFilter.setGroupOp(groupOp);
15             searchFilter.setRules(rules);
16         } catch (Exception e) {
17             System.out.println("filters=" + filters.toString() + ".json转换成实体类出错");
18             e.printStackTrace();
19         }
20         return searchFilter;
21     }

这里只进行了SearchFilter类中list<SearchRule>rule属性的对象转换,因为它是一个SearchRule对象数组,需要单独拿出来进行json转换成对象,如果直接对filter进行 SearchFilter进行实体转换会报错。如果对象中不含有list,array,map等集合,可以像8-9行一样进行对象转换。

测试:

1 public static void main(String[] args) {
2         UserMgmtController con = new UserMgmtController();
3         String filters="{\"groupOp\": \"OR\",\"rules\": [{\"field\": \"realname\",\"op\": \"eq\","+
4                        "\"data\": \"1234\"},{\"field\": \"cityCode\",\"op\": \"ne\",\"data\": \"5678\"}]}";
5         SearchFilter searchFilter =con.jsonToSearchFilter(filters);
6         System.out.println("gop="+searchFilter.getGroupOp()+" rules.size="+searchFilter.getRules().size());
7     }结果:gop=OR rules.size=2
				
时间: 2024-12-14 09:14:52

将JSON数据转换成Java的实体类的相关文章

利用JAVA反射机制将JSON数据转换成JAVA对象

net.sf.json.JSONObject为我们提供了toBean方法用来转换为JAVA对象, 功能更为强大,  这里借鉴采用JDK的反射机制, 作为简单的辅助工具使用,   有些数据类型需要进行转换, 根据需要进行扩展,  这里可以处理Long和Date类型. 只支持单个JSONObject对象的处理,   对于复杂的JSON对象, 如JSONArray数组, 可考虑先遍历, 获取JSONObject后再进行处理. package common; import java.lang.refle

json字符串转java对象实体类

DpRccEntity rccData = JSON.parseObject(JSONObject.toJSONString("JSONString",DpRccEntity.class); 导入的包为:import com.alibaba.fastjson.JSON; 原文地址:https://www.cnblogs.com/huyanlon/p/10907726.html

4.使用Jackson将Json数据转换成实体数据

Jar下载地址:http://jackson.codehaus.org/ 注意:类中的属性名称一定要和Json数据的属性名称一致(大小写敏感),类之间的嵌套关系也应该和Json数据的嵌套关系一致. 4.使用Jackson将Json数据转换成实体数据,布布扣,bubuko.com

将行数据转换成Java(POJO)对象

工作中经常会遇到将行数据转换成Java(POJO)对象的场景,其中关于字段校验和类型转换的处理繁琐而冗余,对于有代码洁癖的人着实不能忍.这里分享下自己封装的工具代码,也许能够帮助你更简单地完成此类任务. 先将以下五个文件加入你豪华午餐(项目??)中 FieldItem: /** * * @author lichmama * */ public class FieldItem { public int getIndex() { return index; } public void setInde

【代码分享——Java&amp;Json】Json转成java对象,已经java对象转成Json对象

做记录用,肯定有地方不完整,先放着吧 [代码分享--Java&Json]Json转成java对象,已经java对象转成Json对象,布布扣,bubuko.com

快速创建和mysql表对应的java domain实体类

今天创建了一个表有十几个字段,创建完之后必然要写一个与之对应的java domain实体类.这不是重复的工作吗?为什么不先把这个表的所有的字段查出来,然后放到linux环境下,用sed工具在每一行的前面加上"private String ",每一行的后面添加";".这样可以节省很多重复工作.下面上sql代码和sed命令. 查询一个mysql表所有列的列名的sql代码如下: SELECT COLUMN_NAME FROM information_schema.COLU

字符串转换成java.util.date类型和将java.util.date类型转换成java.sql.date类型

//将字符串转换成java.util.date类型 DateFormat format = new SimpleDateFormat("yyyyMMDD"); Date date1 = format.parse(startDate); //将java.util.date类型转换成java.sql.date类型 skg.statStartTime = new java.sql.Date(date1.getTime()); skg.statEndTime = new java.sql.Da

参照protobuf,将json数据转换成二进制在网络中传输。

json数据格式在网络中传输需要的数据比二进制庞大太多,我们可以省去key,外加将数字不需要编码成字符串,直接二进制编码就OK. pack : 将json压包,unpack解包成json. var Struct = module.exports = {}; Struct.TYPE = { int8:1, int16:2, int32:3, uint8:4, uint16:5, uint32:7, string:8, object:9, aint8:10, aint16:11, aint32:12

JSON C# Class Generator ---由json字符串生成C#实体类的工具

json作为互联网上轻量便捷的数据传输格式,越来越受到重视.但在服务器端编程过程中,我们常常希望能通过智能提示来提高编码效率.JSON C# Class Generator 能将json格式所表示的JavaScript对象转化成强类型的C#实体类,来实现减少代码输入的效果. http://jsonclassgenerator.codeplex.com/  ----开源的winform工具. http://json2csharp.com/---一款在线转化工具,大家看名字就知道了.