java 多层 list 声明_Java书签 # 多层List集合的Json字符串转Java对象

楔子:无处可去和无处可回,这和自由完全是两回事。《理由》

1.书签引短

多层List集合的Json字符串转Java对象代码实现方案。

2.解决方案

需要使用到:net.sf.json.JSONObject

public static void main(String[] args) {

// 将JSON字符串转换成JSON对象

JSONObject jsonBean = JSONObject.fromObject(jsonObjectStr);

// 添加JSON对象中出现的需要转换的对象到Map中

MapclassMap = new HashMap<>();

classMap.put("result", ResponsePageInfoBO.class);

classMap.put("recipeList", RecipeResponseBO.class);

classMap.put("recipeDrugDetailList", RecipeDrugResponseBO.class);

// 将JSON对象转换成JAVA对象

ReturnInfo returnInfo = (ReturnInfo) JSONObject.toBean(jsonBean, ReturnInfo.class, classMap);

System.out.println(JSON.toJSONString(returnInfo));

}

多层List集合的Json字符串转Java对象中涉及到的实体对象:

注意:Java对象的属性名要与Json字符串中出现的字段名称保持一致。

1)ResponsePageInfoBO

public class ResponsePageInfoBO implements Serializable {

private ListrecipeList;

private Integer prePage;

private Integer pages;

private Integer nextPage;

private Boolean hasNextPage;

private Integer navigateLastPage;

private Integer navigatePages;

private Integer[] navigatePageNums;

private Integer size;

private Boolean isFirstPage;

private Integer startRow;

private Boolean hasPreviousPage;

private Integer navigateFirstPage;

private Integer total;

private Integer endRow;

private Integer pageNum;

private Integer pageSize;

private Boolean isLastPage;

public ListgetRecipeList() {

return recipeList;

}

public void setRecipeList(ListrecipeList) {

this.recipeList = recipeList;

}

// 此处省略get/set

......

}

2)RecipeResponseBO

public class RecipeResponseBO implements Serializable {

private ListrecipeDrugDetailList;

private String name;

private Integer age;

private Integer gender;

private String phoneNumber;

private String storeName;

private String doctorName;

private String symptom;

private String illness;

public ListgetRecipeDrugDetailList() {

return recipeDrugDetailList;

}

public void setRecipeDrugDetailList(ListrecipeDrugDetailList) {

this.recipeDrugDetailList = recipeDrugDetailList;

}

public String getName() {

return name;

}

// 此处省略get/set

......

}

3)RecipeDrugResponseBO

public class RecipeDrugResponseBO implements Serializable {

private String drugName;

private Integer num;

private String unit;

private String spec;

private String perNum;

private String perUnit;

private Integer dose;

private String usage;

private Integer usageFrequencyCode;

private String usageFrequencyName;

public String getDrugName() {

return drugName;

}

// 此处省略get/set

......

}

测试数据:

public static final String jsonObjectStr = "{\n" +

" \"result\": {\n" +

" \"endRow\": 1, \n" +

" \"firstPage\": false, \n" +

" \"hasNextPage\": false, \n" +

" \"hasPreviousPage\": false, \n" +

" \"lastPage\": false, \n" +

" \"recipeList\": [\n" +

" {\n" +

" \"age\": 32, \n" +

" \"doctorName\": \"陈医生\", \n" +

" \"recipeDrugDetailList\": [\n" +

" {\n" +

" \"dose\": 1, \n" +

" \"drugName\": \"板蓝根颗粒\", \n" +

" \"num\": 1, \n" +

" \"perNum\": \"1\", \n" +

" \"perUnit\": \"包\", \n" +

" \"spec\": \"2\", \n" +

" \"unit\": \"盒\", \n" +

" \"usage\": \"口服\", \n" +

" \"usageFrequencyCode\": 1, \n" +

" \"usageFrequencyName\": \"每天三次\"\n" +

" },\n" +

" {\n" +

" \"dose\": 1, \n" +

" \"drugName\": \"四季感冒灵\", \n" +

" \"num\": 1, \n" +

" \"perNum\": \"1\", \n" +

" \"perUnit\": \"包\", \n" +

" \"spec\": \"2\", \n" +

" \"unit\": \"盒\", \n" +

" \"usage\": \"口服\", \n" +

" \"usageFrequencyCode\": 1, \n" +

" \"usageFrequencyName\": \"每天三次\"\n" +

" }\n" +

" ], \n" +

" \"gender\": 1, \n" +

" \"illness\": \"感冒\", \n" +

" \"name\": \"谈笑\", \n" +

" \"phoneNumber\": \"19999999999\", \n" +

" \"storeName\": \"测试店\", \n" +

" \"symptom\": \"感冒\"\n" +

" }\n" +

" ], \n" +

" \"navigateFirstPage\": 1, \n" +

" \"navigateLastPage\": 1, \n" +

" \"navigatePages\": 8, \n" +

" \"navigatePageNums\": [\n" +

" 1\n" +

" ], \n" +

" \"nextPage\": 0, \n" +

" \"pageNum\": 1, \n" +

" \"pageSize\": 15, \n" +

" \"pages\": 1, \n" +

" \"prePage\": 0, \n" +

" \"size\": 1, \n" +

" \"startRow\": 1, \n" +

" \"total\": 1\n" +

" }, \n" +

" \"ok\": true\n" +

"}";

测试结果:

{"ok":true,"result":{"endRow":1,"firstPage":false,"hasNextPage":false,"hasPreviousPage":false,"lastPage":false,"navigateFirstPage":1,"navigateLastPage":1,"navigatePageNums":[1],"navigatePages":8,"nextPage":0,"pageNum":1,"pageSize":15,"pages":1,"prePage":0,"recipeList":[{"age":32,"doctorName":"陈医生","gender":1,"illness":"感冒","name":"谈笑","phoneNumber":"19999999999","recipeDrugDetailList":[{"dose":1,"drugName":"板蓝根颗粒","num":1,"perNum":"1","perUnit":"包","spec":"2","unit":"盒","usage":"口服","usageFrequencyCode":1,"usageFrequencyName":"每天三次"},{"dose":1,"drugName":"四季感冒灵","num":1,"perNum":"1","perUnit":"包","spec":"2","unit":"盒","usage":"口服","usageFrequencyCode":1,"usageFrequencyName":"每天三次"}],"storeName":"测试店","symptom":"感冒"}],"size":1,"startRow":1,"total":1}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值