java实体类接收json对象_将JSON数据转换成JAVA的实体类

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

Java实体类:

SearchFilter 类

1 public class SearchFilter {

2 private String groupOp;

3

4 private List 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 getRules() {

15 return rules;

16 }

17

18 public void setRules(List 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 rules = new ArrayList();

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类中listrule属性的对象转换,因为它是一个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":""

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值