将josn 转换成java类_转:将JSON数据转换成JAVA的实体类

本文介绍了一种方法,用于将JSON格式的数据转换为Java实体类。具体涉及如何处理包含列表类型的复杂对象,并提供了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

Java实体类:

SearchFilter 类:

public classSearchFilter {privateString groupOp;private Listrules;publicString getGroupOp() {returngroupOp;

}public voidsetGroupOp(String groupOp) {this.groupOp =groupOp;

}public ListgetRules() {returnrules;

}public void setRules(Listrules) {this.rules =rules;

}

}

SearchRule 类:

public classSearchRule {privateString field;privateString op;privateString data;publicString getField() {returnfield;

}public voidsetField(String field) {this.field =field;

}publicString getOp() {returnop;

}public voidsetOp(String op) {this.op =op;

}publicString getData() {returndata;

}public voidsetData(String data) {this.data =data;

}

}

导入的package

importcom.fasterxml.jackson.databind.ObjectMapper;importnet.sf.json.JSONArray;import net.sf.json.JSONObject;

解析JSON格式字符串的方法

publicSearchFilter jsonToSearchFilter(String filters) {

SearchFilter searchFilter= null;try{

JSONObject jsonobject= JSONObject.fromObject(filters);//将json格式的字符串转换成JSONObject 对象

JSONArray array = jsonobject.getJSONArray("rules"); //如果json格式的字符串里含有数组格式的属性,将其转换成JSONArray,以方便后面转换成对应的实体

List rules = new ArrayList();for (int i = 0; i < array.size(); i++) {

JSONObject object= (JSONObject) array.get(i); //将array中的数据进行逐条转换

SearchRule rule = (SearchRule) JSONObject.toBean(object, SearchRule.class); //通过JSONObject.toBean()方法进行对象间的转换

rules.add(rule);

}

String groupOp= jsonobject.getString("groupOp"); //简单的直接获取值

searchFilter = new SearchFilter(); //对SearchFilter对象进行组装

searchFilter.setGroupOp(groupOp);

searchFilter.setRules(rules);

}catch(Exception e) {

System.out.println("filters=" + filters.toString() + ".json转换成实体类出错");

e.printStackTrace();

}returnsearchFilter;

}

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

测试:

public static voidmain(String[] args) {

UserMgmtController con= newUserMgmtController();

String filters="{\"groupOp\": \"OR\",\"rules\": [{\"field\": \"realname\",\"op\": \"eq\","+

"\"data\": \"1234\"},{\"field\": \"cityCode\",\"op\": \"ne\",\"data\": \"5678\"}]}";

SearchFilter searchFilter=con.jsonToSearchFilter(filters);

System.out.println("gop="+searchFilter.getGroupOp()+" rules.size="+searchFilter.getRules().size());

}

结果:gop=OR rules.size=2

将java对象转换成json格式:

//将Object 对象转换成 json

publicString objectToJson(Object obj) {

ObjectMapper mapper= newObjectMapper();//Convert object to JSON string

String jsonStr = null;try{

jsonStr=mapper.writeValueAsString(obj);

}catch(IOException e) {

log.error(obj+ "entity 轉換成 json出錯", e);

e.printStackTrace();

System.out.println("entity 轉換成 json出錯");

}returnjsonStr;

}

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

publicString objectToJson(Object obj){

ObjectMapper mapper= newObjectMapper();

String json=null;try{

PropertyNamingStrategy.PascalCaseStrategy pp= newPropertyNamingStrategy.PascalCaseStrategy();

mapper.setPropertyNamingStrategy(pp);

json=mapper.writeValueAsString(obj);

}catch(JsonProcessingException e) {

log.error("json对象转换失败",e);

e.printStackTrace();

}returnjson;

}

结果:

"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、付费专栏及课程。

余额充值