JSON与JAVA的数据转换

本文介绍了使用JSON-lib Java类包进行JSON与Java对象之间的转换,包括对象转换为JSON、JSON转换为Java对象以及JSON集合转换为Java集合的操作。重点展示了如何通过JSON-lib将JSON字符串解析为Java对象,并通过实例演示了将Java对象转换为JSON字符串的过程。

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

JSON-lib这个Java类包用于把bean,map和XML转换成JSON并能够把JSON转回成bean和DynaBean。 
下载地址: http://json-lib.sourceforge.net/  

还要需要的第3方包: commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph.jar,morph-1.0.1.jar 

这几个包也是需要导入的.如果缺少里面的:ezmorph.jar包,则即出现上述异常 java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher

commons系列的包,可在网站:http://www.docjar.com/上面搜索下载,其它包可下载网站如下: 

http://json-lib.sourceforge.net/ 
http://ezmorph.sourceforge.net/ 

http://morph.sourceforge.net/ 

导入之后就ok了,然后看代码

import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;

public class JsonTest {

	/**
	 * json对象转换为java对象
	 * 
	 * @throws JSONException
	 */
	public void jsonToJava() {
		String json = "[{\"addTime\":\"2011-09-19 14:23:02\",\"iccid\":\"1111\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}]";
		// 接收{}对象,此处接收数组对象会有异常
		if (json.indexOf("[") != -1) {
			json = json.replace("[", "");
		}
		if (json.indexOf("]") != -1) {
			json = json.replace("]", "");
		}
		JSONObject obj = JSONObject.fromObject(json);
		SimInfo simInfo = (SimInfo) JSONObject.toBean(obj, SimInfo.class);
		System.out.println("obj: " + simInfo);
		System.out.println(simInfo.getAddTime());
		System.out.println(simInfo.getIccid());
		System.out.println(simInfo.getImei());
		System.out.println(simInfo.getImsi());
		System.out.println(simInfo.getPhoneType());
		System.out.println(simInfo.getRemark());
		System.out.println(simInfo.getTel());
		System.out.println(simInfo.getId());

	}

	/**
	 * 将json转换为java集合对象
	 */
	public void jsonToJavas() {
		String jsons = "[{\"addTime\":\"2011-09-19 14:23:02\",\"iccid\":\"1111\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"},"
				+ "{\"addTime\":\"2011-11-11 14:23:02\",\"iccid\":\"2222\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}]";
		List<SimInfo> simInfos = getJavaCollection(new SimInfo(), jsons);
		System.out.println(simInfos.size());
		for (SimInfo simInfo : simInfos) {
			System.out.println("addTime: " + simInfo.getAddTime());
			System.out.println("=========");
		}

	}

	/**
	 * 封装将json对象转换为java集合对象
	 * 
	 * @param <T>
	 * @param clazz
	 * @param jsons
	 * @return
	 */
	private <T> List<T> getJavaCollection(T clazz, String jsons) {
		List<T> objs = null;
		JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(jsons);
		if (jsonArray != null) {
			objs = new ArrayList<T>();
			List list = (List) JSONSerializer.toJava(jsonArray);
			for (Object o : list) {
				JSONObject jsonObject = JSONObject.fromObject(o);
				T obj = (T) JSONObject.toBean(jsonObject, clazz.getClass());
				objs.add(obj);
			}
		}
		return objs;
	}

	/**
	 * java对象转换为json对象
	 * 
	 * @throws JSONException
	 */
	public void javaToJson() {
		SimInfo simInfo = new SimInfo();
		simInfo.setAddTime("121");
		simInfo.setIccid("1111");
		simInfo.setImei("2222");
		simInfo.setImsi("3333");
		simInfo.setPhoneType(4);
		simInfo.setRemark("aaaa");
		simInfo.setTel("5555");
		// java对象转换为json对象
		String json = new JSONArray().fromObject(simInfo).toString();
		// json: [{"addTime":"2011-09-19
		// 14:23:02","iccid":"1111","id":0,"imei":"2222","imsi":"3333","phoneType":"4444","remark":"aaaa","tel":"5555"}]
		System.out.println("json: " + json);
	}
	
	public static void main(String[] args) {
		new JsonTest().jsonToJava();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值