json数据转java对象(复杂java对象)
2017-09-13 17:34
459 查看
直接贴代码:
主要代码:
PersonalInfo 实体类 :
Picture 实体类
对象型json数据
数组型json数据
主要代码:
package json; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; /** * 要想实现JSON和java对象之间的互转,需要借助第三方jar包,这里使用json-lib这个jar包, * json-lib需要commons-beanutils、commons-collections、commons-lang、 * commons-logging、ezmorph五个包的支持. * json-lib提供了几个类可以完成此功能,例,JSONObject、JSONArray。 * 从类的名字上可以看出JSONObject转化的应该是对象格式的,而JSONArray转化的则应该是数组对象(即,带[]形式)的。 * @author hg * */ @SuppressWarnings("rawtypes") public class JsonHandle { public static void main(String[] args) { JsonHandle jsonHandle = new JsonHandle(); jsonHandle.JsonArrayDemo(); jsonHandle.JsonObjectDemo(); } /** * JSON 数组对象格式 [ 开始的json数据 */ public void JsonArrayDemo(){ String jsonStr = "[{\"name\":\"小贺\",\"age\":20,\"sex\":\"男\"," + "\"pictures\":[{\"fileName\":\"1.jpg\",\"pictureUrl\":\"http://www.1.jsp\"}," + "{\"fileName\":\"2.jpg\",\"pictureUrl\":\"http://www.2.jsp\"}]}," + "{\"name\":\"小露\",\"age\":19,\"sex\":\"女\"," + "\"pictures\":[{\"fileName\":\"3.jpg\",\"pictureUrl\":\"http://www.3.jsp\"}," + "{\"fileName\":\"4.jpg\",\"pictureUrl\":\"http://www.4.jsp\"}]}]"; //数组对象格式使用JSONArray JSONArray jsonArray = JSONArray.fromObject(jsonStr); //对应json的数组 List<PersonalInfo> List<PersonalInfo> personalInfos =new ArrayList<PersonalInfo>(); //遍历 jsonArray for(int i=0;i<jsonArray.size();i++){ //获得jsonArray的第 i 个元素 Object o = jsonArray.get(i); //转换为单个 JSONObject 对象 JSONObject jsonObject = JSONObject.fromObject(o); /* * 当其中属性有类似List, Map,ArrayList就不可以了。 会报错:MorphDynaBean cannot be * cast to ******。 * 在JSONObject.toBean的时候如果转换的类中有集合, * 可以先定义 Map<String, Class<E>> classMap = new HashMap<String, Class<E>>(); * 在classMap中put你要转换的类中的集合名,比如:classMap.put("pictures", Picture.class); * 然后在toBean()的时候把参数加上, * 例如:PersonalInfo personalInfo = * (PersonalInfo)JSONObject.toBean(jsonObject, PersonalInfo.class,classMap); */ Map<String, Class> pictureMap = new HashMap<String, Class>(); pictureMap.put("pictures",Picture.class); //转化为java对象 PersonalInfo personalInfo = (PersonalInfo)JSONObject.toBean(jsonObject, PersonalInfo.class,pictureMap); //添加对象至数组 personalInfos.add(personalInfo); } for(PersonalInfo pi : personalInfos){ //对象toString()打印:PersonalInfo {name=小贺, age=20, sex=男, pictures= //[{fileName=1.jpg, pictureUrl=http://www.1.jsp}, //{fileName=2.jpg, pictureUrl=http://www.2.jsp}]} System.out.println(pi.toString()); } } /** * JSON的对象格式的字符串 { 开始的json数据 */ public void JsonObjectDemo(){ String jsonStr = "{\"name\":\"小贺\",\"age\":20,\"sex\":\"男\"," + "\"pictures\":[{\"fileName\":\"1.jpg\",\"pictureUrl\":\"http://www.1.jsp\"}," + "{\"fileName\":\"2.jpg\",\"pictureUrl\":\"http://www.2.jsp\"}]}"; //1、使用JSONObject JSONObject jsonObject=JSONObject.fromObject(jsonStr); Map<String, Class> pictureMap = new HashMap<String, Class>(); pictureMap.put("pictures",Picture.class); //转化为java对象 PersonalInfo personalInfo = (PersonalInfo)JSONObject.toBean(jsonObject, PersonalInfo.class,pictureMap); //对象toString()打印:PersonalInfo {name=小贺, age=20, sex=男, //pictures=[{fileName=1.jpg, pictureUrl=http://www.1.jsp}, //{fileName=2.jpg, pictureUrl=http://www.2.jsp}]} System.out.println(personalInfo.toString()); } }
PersonalInfo 实体类 :
package json; import java.util.List; /** * 个人信息 * @author hg * */ public class PersonalInfo { private String name; //姓名 private Integer age; //年龄 private String sex; //性别 private List<Picture> pictures; //照片 public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public List<Picture> getPictures() { return pictures; } public void setPictures(List<Picture> pictures) { this.pictures = pictures; } public String toString() { String picturesStr = ""; for(int i=0;i<pictures.size();i++){ picturesStr+=pictures.get(i).toString(); if(i<pictures.size()-1){ picturesStr+=","; } } return "PersonalInfo {name=" + name + ", age=" + age + ", sex=" + sex + ", pictures=[" + picturesStr+ "]}"; } }
Picture 实体类
package json; /** * 个人照片Entity * @author hg * */ public class Picture { private String fileName; //文件名 private String pictureUrl; //照片Url public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public String getPictureUrl() { return pictureUrl; } public void setPictureUrl(String pictureUrl) { this.pictureUrl = pictureUrl; } public String toString() { return "{fileName=" + fileName + ", pictureUrl=" + pictureUrl + "}"; } }
对象型json数据
{ "name":"小贺", "age":20, "sex":"男", "pictures":[ { "fileName":"1.jpg", "pictureUrl":"http://www.1.jsp" }, { "fileName":"2.jpg", "pictureUrl":"http://www.2.jsp" } ] }
数组型json数据
[
{ "name":"小贺", "age":20, "sex":"男", "pictures":[ { "fileName":"1.jpg", "pictureUrl":"http://www.1.jsp" }, { "fileName":"2.jpg", "pictureUrl":"http://www.2.jsp" } ] },
{
"name":"小露",
"age":19,
"sex":"女",
"pictures":[
{
"fileName":"3.jpg",
"pictureUrl":"http://www.3.jsp"
},
{
"fileName":"4.jpg",
"pictureUrl":"http://www.4.jsp"
}
]
}
]
相关文章推荐
- java中json数据生成和解析(复杂对象演示)
- Json树形结构数据转Java对象并存储到数据库的实现-超简单的JSON复杂数据处理 .
- json复杂数据与Java对象的转换
- Json树形结构数据转Java对象并存储到数据库的实现-超简单的JSON复杂数据处理
- 复杂的json格式数据转成Java对象
- JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现
- java 各种类型数据,集合对象封装 成json
- 转载:java方式的将java对象以及list或者map转化为json数据 .
- java 各种类型数据,集合对象封装 成json
- Json-lib, 实现Java对象与JSON数据格式的互转
- java对象转换成为json数据
- json数据解析与JAVA对象转换以及在JQUERY中的使用
- JSON数据转换为Java对象
- json和java数据对象间的转换
- android/java中把对象、对象bean、Collection以及字符串转换成Json格式数据
- java方式的将java对象以及list或者map转化为json数据
- Json-lib, 实现Java对象与JSON数据格式的互转
- java对象转换成json数据
- HTML5 利用json对象来存取复杂数据
- java对象、List转为json格式的数据