json是前后端交互数据的常用方式,json的转换库有很多种,下面简单介绍使用json-lib实现Java对象与json数据的相互转换。
json-lib的jar包,下载地址为:https://sourceforge.net/projects/json-lib/,同时该jar包还依赖commons-beanutils-1.8.0.jar、commons-collections-3.2.1.jar、commons-lang-2.5.jar、commons-logging-1.1.1.jar、ezmorph-1.0.6.jar等五个jar包。依赖的jar包如下图。
json-lib提供了的核心类包括JSONObject、JSONArray。从类的名字上可以看出JSONObject转化的应该是对象格式的,而JSONArray转化的则应该是数组对象的。
以下为测试代码:
/*
* Title:TestJson.java<br>
* Date: 2017年1月3日 上午9:21:52<br>
*
*/
package testJson;
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;
/**
* <br>
*
* @version 1.0
*/
public class TestJson
{
/**
* json串转为map
* @param <T>
*
* @param params
* @return
*/
@SuppressWarnings("unchecked")
public static <T> Map<T, T> paserJsonToMap(String params)
{
return paserJsonToEntity(params, Map.class);
}
/**
* json转为bean
*
* @param param_json
* @param o
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T paserJsonToEntity(String params, Class<T> o)
{
JSONObject jb = JSONObject.fromObject(params);
T instance = (T) JSONObject.toBean(jb, o);
return instance;
}
@SuppressWarnings("unchecked")
public static <T> T[] parseJsonToArray(String params,Class<T> o){
JSONArray jsonArray=JSONArray.fromObject(params);
return (T[]) JSONArray.toArray(jsonArray,o);
}
@SuppressWarnings("unchecked")
public static <T> List<T> parseJsonToList(String params,Class<T> o){
JSONArray jsonArray=JSONArray.fromObject(params);
return JSONArray.toList(jsonArray, o);
}
/**
* list转为json
* @param <T>
* @param list
* @return
*/
public static <T> String listToJsonStr(List<T> list){
JSONArray jsonArray = JSONArray.fromObject( list );
return jsonArray.toString();
}
/**
* map转为json
* @param <T>
* @param map
* @return
*/
public static <T> String mapToJsonStr(Map<T,T> map){
JSONObject json = JSONObject.fromObject(map);
return json.toString();
}
/**
* bean转为json
* @param obj
* @return
*/
public static String beanToJsonStr(Object obj){
JSONObject jsonObject = JSONObject.fromObject(obj);
return jsonObject.toString();
}
/**
* 数组转为json
* @param objArray
* @return
*/
public static String arrayToJsonStr(Object[] objArray){
JSONArray jsonArray = JSONArray.fromObject(objArray);
return jsonArray.toString();
}
public static void main(String[] args){
//array互转
System.out.println("\n-----array转换-----");
String[] array=new String[]{"a","b","c"};
String arrayStr=arrayToJsonStr(array);
System.out.println(arrayStr);
String[] resultArray=(String[]) parseJsonToArray(arrayStr, String.class);
System.out.println(resultArray[0]);
System.out.println("-----array转换-----");
//list互转
System.out.println("\n-----list转换-----");
List<String> list=new ArrayList<String>();
list.add("c");
list.add("e");
String listStr=listToJsonStr(list);
List<String> resultList=parseJsonToList(listStr, String.class);
System.out.println(resultList.get(0));
System.out.println("-----list转换-----");
//map互转
System.out.println("\n-----map转换-----");
Map<String,String> map = new HashMap<String,String>();
map.put("name", "sherry");
map.put("gender", "man");
String mapStr=mapToJsonStr(map);
Map<String,String> resultMap=paserJsonToMap(mapStr);
System.out.println(resultMap.get("name"));
System.out.println("-----map转换-----");
}
}