思路:首先将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 }
1 //导入的package
2 import com.fasterxml.jackson.databind.ObjectMapper;
3 import net.sf.json.JSONArray;
4 import net.sf.json.JSONObject;

解析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
将java对象转换成json格式:
 1 //将Object 对象转换成 json
2 public String objectToJson(Object obj) {
3 ObjectMapper mapper = new ObjectMapper();
4 // Convert object to JSON string
5 String jsonStr = null;
6 try {
7 jsonStr = mapper.writeValueAsString(obj);
8 } catch (IOException e) {
9 log.error(obj + "entity 轉換成 json出錯", e);
10 e.printStackTrace();
11 System.out.println("entity 轉換成 json出錯");
12 }
13 return jsonStr;
14 }

将Object 转换成json字符串时,默认使用用是的驼峰方式,如果不想使用驼峰则可以增加红色部分设置,带下划线的也可以原样输出:

 1 public String objectToJson(Object obj){
2 ObjectMapper mapper = new ObjectMapper();
3 String json =null;
4 try {
5 PropertyNamingStrategy.PascalCaseStrategy pp = new PropertyNamingStrategy.PascalCaseStrategy();
6 mapper.setPropertyNamingStrategy(pp);
7 json = mapper.writeValueAsString(obj);
8 } catch (JsonProcessingException e) {
9 log.error("json对象转换失败",e);
10 e.printStackTrace();
11 }
12 return json;
13 }

结果:

"UpLoadDateTime":"2017-09-25 10:51:41","OrganizationId":"B3EA5A4D-7C60-4C21-AF09-494890467C34" ,"Test_Code":""

将JSON数据转换成JAVA的实体类的更多相关文章

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

    net.sf.json.JSONObject为我们提供了toBean方法用来转换为JAVA对象, 功能更为强大,  这里借鉴采用JDK的反射机制, 作为简单的辅助工具使用,   有些数据类型需要进行转 ...

  2. c# json数据解析——将字符串json格式数据转换成对象或实体类

    网络中数据传输经常是xml或者json,现在做的一个项目之前调其他系统接口都是返回的xml格式,刚刚遇到一个返回json格式数据的接口,通过例子由易到难总结一下处理过程,希望能帮到和我一样开始不会的朋 ...

  3. 【转】C#中将JSon数据转换成实体类,将实体类转换成Json

    http://wo13145219.iteye.com/blog/2022667 http://json2csharp.chahuo.com/ using System; using System.C ...

  4. c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具

    c#实例化继承类,必须对被继承类的程序集做引用   0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...

  5. 高速创建和mysql表相应的java domain实体类

    今天创建了一个表有十几个字段,创建完之后必定要写一个与之相应的java domain实体类. 这不是反复的工作吗?为什么不先把这个表的全部的字段查出来,然后放到linux环境下,用sed工具在每一行的 ...

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

    工作中经常会遇到将行数据转换成Java(POJO)对象的场景,其中关于字段校验和类型转换的处理繁琐而冗余,对于有代码洁癖的人着实不能忍.这里分享下自己封装的工具代码,也许能够帮助你更简单地完成此类任务 ...

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

    Jar下载地址:http://jackson.codehaus.org/ 注意: 一.类中的属性名称一定要和Json数据的属性名称一致(大写和小写敏感),类之间的嵌套关系也应该和Json数据的嵌套关系 ...

  8. JSONArray数据转换成java List

    1.后台接收json数组转成封装实体类的List: package no.integrasco.ingentia.news.qaedition; public class Person { priva ...

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

    json作为互联网上轻量便捷的数据传输格式,越来越受到重视.但在服务器端编程过程中,我们常常希望能通过智能提示来提高编码效率.JSON C# Class Generator 能将json格式所表示的J ...

随机推荐

  1. windows下安装Kettle

    先下载kettle稳定版本https://community.hitachivantara.com/docs/DOC-1009855 下载后并且解压 安装kettle必须安装jdk在你的电脑上,ket ...

  2. k8s学习笔记之九: Service Account

    第一章.前言 每一个用户对API资源进行操作都需要通经过以下三个步骤: 第一步:对客户端访问进行认证操作,确认是否具有访问k8s权限 token(共享秘钥) SSL(双向SSL认证) ....通过任何 ...

  3. bitbucket 上公钥SSH key如何add key并进行项目运用

    前提:从sourcetree 添加项目时老是拉取不下来,查到原因是应为bitbucket需要SSH key公钥 目的:公钥相当于你在任何一台电脑只要有公钥授权就可以随时提交代码到服务器 原因: 1.很 ...

  4. Java 性能调优工具

    CPU使用率工具: vmstat 检查应用性能时,应该首先审查CPU时间.代码优化的目的是提升而不是降低(更短时间段内的)CPU的使用率.在试图深入优化应用前,应该先弄清楚为何CPU使用率低.磁盘使用 ...

  5. Java面试——线程池

    1.类比介绍 假如有一个工厂,工厂里面有10个工人,每个工人同时只能做一件任务. 因此只要当10个工人中有工人是空闲的,来了任务就分配给空闲的工人做: 当10个工人都有任务在做时,如果还来了任务,就把 ...

  6. Oracle表中的主键被当成哪些表的外键

    SELECT B.TABLE_NAME FROM USER_CONSTRAINTS A INNER JOIN USER_CONS_COLUMNS B ON A.CONSTRAINT_NAME = B. ...

  7. 简单定时器的Java实现

    这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求 Timer类是用来执行任务的类,它接受一个TimerTask做参数 Timer有两种执行任务的模式,最常用的是schedule,它可以以两 ...

  8. 把Gitlab迁移到Docker容器里

    把Gitlab迁移到Docker容器里 Apr 9, 2015. | By: 任怀林 公司的gitlab一直是运行在ovm的虚拟机里的,版本还是6.7.5.版本有点老了,最近在研究docker,于是想 ...

  9. javaMail实现收发邮件(二)

    JavaMail API常用类 JavaMail API使用javax.mail.Message类来表示一封邮件,Message类是一个抽象类,所以我们需要使用其子类javax.mail.intern ...

  10. SQL Server日志文件过大 大日志文件清理方法 不分离数据库

    SQL Server日志文件过大    大日志文件清理方法 ,网上提供了很多分离数据库——〉删除日志文件-〉附加数据库 的方法,此方法风险太大,过程也比较久,有时候也会出现分离不成功的现象.下面的方式 ...