JSON基本知识

commons-beanutils-1.7.0.jar  
commons-lang-2.1.jar 
ezmorph-1.0.2.jar 
json-lib-1.1-jdk15.jar 
1. List集合转换成json代码
List list = new ArrayList();
list.add( "first" );
list.add( "second" );
JSONArray jsonArray2 = JSONArray.fromObject( list );
2. Map集合转换成json代码
Map map = new HashMap();
map.put("name", "json");
map.put("bool", Boolean.TRUE);
map.put("int", new Integer(1));
map.put("arr", new String[] { "a", "b" });
map.put("func", "function(i){ return this.arr[i]; }");
JSONObject json = JSONObject.fromObject(map);
3. Bean转换成json代码
JSONObject jsonObject = JSONObject.fromObject(new JsonBean());
4. 数组转换成json代码
boolean[] boolArray = new boolean[] { true, false, true };
JSONArray jsonArray1 = JSONArray.fromObject(boolArray);
5. 一般数据转换成json代码
JSONArray jsonArray3 = JSONArray.fromObject("['json','is','easy']" );

[color=red]response.getWriter().write(jsonArray2.toString());[/color]

<html>
  <head>
    <title>My JSP 'json.jsp' starting page</title>
 <script type="text/javascript" src="js/jquery-1.3.2.js"></script>
 <script type="text/javascript">
  $(document).ready(function(){
  var txt = '{"employees":[' +
   '{"firstName":"Bill","lastName":"Gates" },' +
   '{"firstName":"George","lastName":"Bush" },' +
   '{"firstName":"Thomas","lastName":"Carter" }]}';
   
  var JSONObject= {
    "name":"Bill Gates",
    "street":"Fifth Avenue New York 666",
    "age":56,
    "phone":"555 1234567"};
  var book = '{"hcz":[{"author":"hong","author1":"honglou"},{"author":"hong1","author1":"honglou1"}]}';
   $("#btn").click(function(){
    var dataObject = eval("("+txt+")");
    alert(dataObject.employees[1].firstName);
   });
   $("#btn1").click(function(){
    alert(JSONObject.name);
   });
   $("#btn2").click(function(){
    var bookObject = eval("("+book+")");
    alert(bookObject.hcz[1].author);
   });
   
  });
 </script> 
  </head>  
  <body>
   <input type="button" value="Button0" id="btn" />
   <input type="button" value="Button1" id="btn1" />
    <input type="button" value="Button2" id="btn2" />
  </body>
</html>

 

package com.test;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

/**
 * JSON和JAVA的POJO的相互转换
 * 
 * @author tanpingping
 * @date 2012-5-15
 */
public final class JSONUtils {
	/**
	 * 将String转换成JSON
	 * 
	 * @param key
	 * @param value
	 * @return json格式的字符串
	 */
	public String stringToJson(String key, String value) {
		JSONObject object = new JSONObject();
		object.put(key, value);
		return object.toString();
	}

	/**
	 * 将JSON转换成数组,其中valueClz为数组中存放的对象的Class
	 * 
	 * @param json格式的字符串
	 *            如:[{'name':'李名','password':'10aVB','age':'15'}]
	 * @param valueClz
	 *            需要转换的Class对象 如:User
	 * @return valueClz对象的数组
	 */
	@SuppressWarnings("unchecked")
	public Object jsonToArray(String json, Class valueClz) {
		JSONArray jsonArray = JSONArray.fromObject(json);
		return JSONArray.toArray(jsonArray, valueClz);
	}

	/**
	 * 将Collection转换成JSON
	 * 
	 * @param object
	 *            需要对象的值转换
	 * @return
	 */
	public String collectionToJson(Object object) {
		JSONArray jsonArray = JSONArray.fromObject(object);
		return jsonArray.toString();
	}

	/**
	 * 将JSON转换成Collection,其中collectionClz为Collection具体子类的Class,
	 * 
	 * @param json
	 * @param collectionClz
	 *            这个值没用到
	 * @param valueClz
	 *            为Collection中存放的对象的Class
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public Collection jsonToCollection(String json, Class collectionClz,
			Class valueClz) {
		JSONArray jsonArray = JSONArray.fromObject(json);
		return JSONArray.toCollection(jsonArray, valueClz);
	}

	/**
	 * 将数组转换成JSON
	 * 
	 * @param object
	 *            需要转换的数组
	 * @return
	 */
	public String arrayToJson(Object object) {
		JSONArray jsonArray = JSONArray.fromObject(object);
		return jsonArray.toString();
	}

	/**
	 * 将Map转换成JSON
	 * 
	 * @param object
	 * @return
	 */
	public String mapToJson(Object object) {
		JSONObject jsonObject = JSONObject.fromObject(object);
		return jsonObject.toString();
	}

	/**
	 * 将JSON转换成Map
	 * 
	 * @param keyArray
	 *            为Map的key
	 * @param json
	 * @param valueClz
	 *            为Map中value的Class
	 * @return Map对象
	 */
	@SuppressWarnings("unchecked")
	public Map jsonToMap(Object[] keyArray, String json, Class valueClz) {
		JSONObject jsonObject = JSONObject.fromObject(json);
		Map classMap = new HashMap();

		for (int i = 0; i < keyArray.length; i++) {
			classMap.put(keyArray[i], valueClz);
		}
		return (Map) JSONObject.toBean(jsonObject, Map.class, classMap);
	}

	/**
	 * 将POJO转换成JSON
	 * 
	 * @param object
	 *            需要转换的对象
	 * @return
	 */
	public String beanToJson(Object bean) {
		JSONObject jsonObject = JSONObject.fromObject(bean);
		return jsonObject.toString();
	}

	/**
	 * 将JSON转换成POJO
	 * 
	 * @param json
	 * @param beanClz
	 *            为POJO的Class
	 * @return
	 */
	public Object jsonToObject(String json, Class beanClz) {
		return JSONObject.toBean(JSONObject.fromObject(json), beanClz);
	}

	/**
	 * 将JSON转换成String
	 * 
	 * @param json
	 * @param key
	 * @return
	 */
	public String jsonToString(String json, String key) {
		JSONObject jsonObject = JSONObject.fromObject(json);
		return jsonObject.get(key).toString();
	}
	 /**
  * JAVA数组对象转换成JSON字符串
  * 
  * @param list JAVA数组对象
  * @return JSON字符串
  * @throws MapperException
  */
 public static String obj2Json(List<Class<?>> list) throws MapperException {
  if (list == null || list.size() == 0) {
   return "{}";
  }
  StringBuilder jsonString = new StringBuilder();
  for (int i = 0; i < list.size(); i++) {
   if (i != 0) {
    jsonString.append(",");
   }
   Class<?> cla = list.get(i);
   jsonString.append(obj2Json(cla, false));
  }
  return jsonString.toString();
 }
 /**
  * JAVA集合对象转换成JSON字符串
  * 
  * @param map JAVA集合对象
  * @return JSON字符串
  * @throws MapperException
  */
 public static String obj2Json(Map<String, Class<?>> map) throws MapperException {
  if (map == null || map.size() == 0) {
   return "{}";
  }
  StringBuilder jsonString = new StringBuilder();
  Set<String> keySet = map.keySet();
  boolean isFirst = true;
  for (String key : keySet) {
   if (isFirst) {
    isFirst = false;
   } else {
    jsonString.append(",");
   }
   Class<?> cla = map.get(key);
   jsonString.append(obj2Json(cla, false));
  }
  return jsonString.toString();
 }
 
 /**
  * JAVA集合对象转换成JSON字符串
  * 
  * @param map JAVA集合对象
  * @return JSON字符串
  * @throws MapperException
  */
 @SuppressWarnings("unchecked")
 public static String map2Json(Map<?,?> map) throws MapperException {
  MapBean mapBean = new MapBean((Map<String, Object>)map);
  return obj2Json(mapBean);
 }
 /**
  * JAVA数组对象转换成JSON字符串
  * 
  * @param list JAVA数组对象
  * @return JSON字符串
  * @throws MapperException
  */
 public static String list2Json(List<?> list) throws MapperException {
  ListBean listBean = new ListBean(list);
  return obj2Json(listBean);
 }
 /**
  * 重载objectToJsonStr方法
  * 
  * @param obj 需要转换的JAVA对象
  * @param format 是否格式化
  * @return JSON字符串
  * @throws MapperException
  */
 public static String obj2Json(Object obj, boolean format) throws MapperException {
  JSONValue jsonValue = JSONMapper.toJSON(obj);
  String jsonStr = jsonValue.render(format);
  return jsonStr;
 }
 /**
  * JSON字符串转换成JAVA对象
  * 
  * @param jsonStr JSON字符串
  * @param cla JAVA对象
  * @return 转换后的对象
  */
 public static Object json2Obj(String jsonStr, Class<?> cla) throws Exception {
  Object obj = null;
  try {
   JSONParser parser = new JSONParser(new StringReader(jsonStr));
   JSONValue jsonValue = parser.nextValue();
   if (jsonValue instanceof com.sdicons.json.model.JSONArray) {
    List<Object> list = new ArrayList<Object>();
    JSONArray jsonArray = (JSONArray) jsonValue;
    for (int i = 0; i < jsonArray.size(); i++) {
     JSONValue jsonObj = jsonArray.get(i);
     Object javaObj = JSONMapper.toJava(jsonObj, cla);
     list.add(javaObj);
    }
    obj = list;
   } else if (jsonValue instanceof com.sdicons.json.model.JSONObject) {
    obj = JSONMapper.toJava(jsonValue, cla);
   } else {
    obj = jsonValue;
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return obj;
 }
	

}

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值