Java之json和对象之间的相互转换
来源:互联网 发布:广州新科佳都科技 知乎 编辑:程序博客网 时间:2024/05/16 19:06
json使用前必须先引入json的相关jar包,我这里用的是json-lib-2.4-jdk15.jar这个版本的jar包。如果大家没有的话可以直接在我这里下载:点击打开链接
导入完jar就可以正式开始开发了,这里先看一个对象转json的例子:
对象的具体内容如下:
package myapi.json.demo.entity;import java.util.List;public class MyBean {private String Id;private String Name;private List CardNum;public MyBean(String id, String name, List cardNum) {super();Id = id;Name = name;CardNum = cardNum;}public MyBean() {super();}public String getId() {return Id;}public void setId(String id) {Id = id;}public String getName() {return Name;}public void setName(String name) {Name = name;}public List getCardNum() {return CardNum;}public void setCardNum(List cardNum) {CardNum = cardNum;}}转换的关键代码如下所示:
package myapi.json.demo;import java.lang.reflect.InvocationTargetException;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.commons.beanutils.PropertyUtils;import myapi.json.demo.entity.MyBean;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class JsonApi {public static void main(String[] args) throws Exception {List<MyBean> myBeanList = new ArrayList<MyBean>();List<String> cardNum1 = new ArrayList<String>();cardNum1.add("number1");cardNum1.add("number2");cardNum1.add("number3");cardNum1.add("number4");MyBean myBean1=new MyBean("number-1", "test-1", cardNum1);List<String> cardNum2 = new ArrayList<String>();cardNum2.add("number1");cardNum2.add("number2");cardNum2.add("number3");cardNum2.add("number4");MyBean myBean2=new MyBean("number-2", "test-2", cardNum2);myBeanList.add(myBean1);myBeanList.add(myBean2);JSONArray jsonArray=new JSONArray().fromObject(myBeanList);JSONObject jsonObject = new JSONObject();jsonObject.put("key", jsonArray);System.out.println(jsonObject);}}
运行结果如下:
{"key":[{"cardNum":["number1","number2","number3","number4"],"id":"number-1","name":"test-1"},
{"cardNum":["number1","number2","number3","number4"],"id":"number-2","name":"test-2"}]}
这里需要注意的是JSONObject中必须是类似于map中key+value的类型,而JSONArray中必须是类似于list中的类似。
下面是json转对象的例子:
package myapi.json.demo;import java.lang.reflect.InvocationTargetException;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.commons.beanutils.PropertyUtils;import myapi.json.demo.entity.MyBean;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class JsonApi {public static void main(String[] args) throws Exception {List<MyBean> myBeanList = new ArrayList<MyBean>();List<String> cardNum1 = new ArrayList<String>();cardNum1.add("number1");cardNum1.add("number2");cardNum1.add("number3");cardNum1.add("number4");MyBean myBean1=new MyBean("number-1", "test-1", cardNum1);List<String> cardNum2 = new ArrayList<String>();cardNum2.add("number1");cardNum2.add("number2");cardNum2.add("number3");cardNum2.add("number4");MyBean myBean2=new MyBean("number-2", "test-2", cardNum2);myBeanList.add(myBean1);myBeanList.add(myBean2);JSONArray jsonArray=new JSONArray().fromObject(myBeanList);JSONObject jsonObject = new JSONObject();jsonObject.put("key", jsonArray);JSONArray arrayResult=jsonObject.getJSONArray("key");for(int i=0;i<arrayResult.size();i++){ JSONObject jsonResult = arrayResult.getJSONObject(i); MyBean myBeanResult= (MyBean)JSONObject.toBean(jsonResult, MyBean.class); System.out.println(myBeanResult.getName());}}}
运行结果如下:
test-1test-2这里需要注意的是:只有JSONOBject中才有toBean的方法,所以想要把JSONArray中的list数据一一对应到对象中,只能先把JSOnArray对象转换为JSONObject才可以。
这里介绍的是最基本的json转对象的方法,关于如何创建json其实很简单,大部分其实都是map,list,数组,对象等进行混合组装成json数据,对于这种混合型的解析一般都是根据具体数据进行具体解析。当然最好的方式其实就是服务器通过对象直接转换为json数据,客户端通过编写相同的对象实体类,直接进行json转换对象操作就可以实现对象的解析操作,既省事又省力。
1 0
- Java之json和对象之间的相互转换
- json和java对象之间的相互转换
- json字符串和json对象之间的相互转换
- java对象与json对象之间的相互转换
- json和java对象的相互转换
- JSON和JAVA对象的相互转换
- Java对象和json的相互转换
- json/java对象/xml之间相互转换
- JSON与java对象之间的相互转换
- Java中Json字符串与对象之间的相互转换
- JSON对象和字符串之间的相互转换
- JSON对象和字符串之间的相互转换
- JSON对象和字符串之间的相互转换
- JSON对象和字符串之间的相互转换
- JSON数据和对象之间的相互转换
- JSON对象和字符串之间的相互转换
- JSON对象和字符串之间的相互转换
- JSON对象和字符串之间的相互转换
- 编码中关于size_t的一个问题
- Cocos2dx-3.x触摸事件之实现人机交互(三)
- refind 0.10.3 配置文件refind.conf简单分析
- 魏则西事件之后,民营医疗的营销方式
- Jquery Md5加密-Jquery.md5.js
- Java之json和对象之间的相互转换
- Leetcode Restore IP Address
- JavaScript数组的高级用法-reduce和reduceRight详解
- android动画定义
- 从 ASP .NET 进行 Active Directory 域服务身份验证
- java-jni-01-Introduction
- HDU4069(未AC)
- STM32F1学习-时钟系统
- UVA - 10916 Factstone Benchmark