JSONObject如何转为实体类对象
作者:有点野的程序猿
介绍了JSONObject转为实体类对象的三种方法:JSONObject中的toJavaObject方法和getObject方法支持深转换,而JSON中的parseObject方法只能转换一层对象,此外,还补充说明了在对JSON转为实体类对象时,无论JSON中的数据字段是否多于或少于实体类中字段,转化都不会报错
JSONObject转为实体类对象
JSONObject js = new JSONObject(); js.put("name", "张三"); js.put("age", 18); Student student = JSON.toJavaObject(js, Student.class); Student student1 = JSON.parseObject(String.valueOf(js), Student.class);
注:
- JSON中的toJavaObject方法和JSONObject中的getObject方法支持深转换,可以转换实体对象;
- 而JSON中的parseObject方法只能转换一层对象;
深转换
以上边代码中的js为例:
深转换的的意思也就是如果在js中再put一个student对象,那么parseObject是不能转换js中的student对象的。
补充说明
新增一个知识点
在对json转为实体类对象时,无论json中的数据字段是否多于或少于实体类中字段,转化都不会报错
举个例子:
//一个Student实体类,属性包括姓名和年龄 @Data public class Student { private String name; private Integer age; }
写一个转为实体类的代码
- 情况一:json字段多于实体类字段
public class test { public static void main(String[] args) { JSONObject jsonObject = new JSONObject(); jsonObject.put("name", "zhangsan"); jsonObject.put("age", 18); jsonObject.put("gender", "male"); Student student = JSON.parseObject(String.valueOf(jsonObject), Student.class); Student student1 = JSON.toJavaObject(jsonObject, Student.class); System.out.println(student); System.out.println(student1); } }
结果
- 情况二:json字段少于实体类字段
public class test { public static void main(String[] args) { JSONObject jsonObject = new JSONObject(); jsonObject.put("name", "zhangsan"); //jsonObject.put("age", 18); //jsonObject.put("gender", "male"); Student student = JSON.parseObject(String.valueOf(jsonObject), Student.class); Student student1 = JSON.toJavaObject(jsonObject, Student.class); System.out.println(student); System.out.println(student1); } }
结果
注:这个点其实挺重要的,这充分说明了一件事,那就是json数据格式的灵活性。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。