Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】

json-lib-1.1-jdk15.jar 下载地址:

commons-collections-3.2.1.jar

commons-lang-2.4.jar

commons-logging-1.1.1.jar

commons-beanutils-1.8.0.jar

以上commons系列包在tomcat/comon/lib下可以找到;

ezmorph-1.0.6.jar 下载地址

morph-1.0.1 下载地址:

有了这些jar包的支持,平时关于json处理的方法都可以找到对应的类;贴上一段代码示例:

package util;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Set;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class JSONHelper {/*** 将JSONArray对象转换成Map-List集合* @param jsonArr* @return*/public static Object JsonToList(JSONArray jsonArr){List<Object> jsonObjList = new ArrayList<Object> ();for(Object obj : jsonArr){if(obj instanceof JSONArray){jsonObjList.add(JsonToList((JSONArray) obj));} else if(obj instanceof JSONObject){jsonObjList.add(JsonToMap((JSONObject) obj));}else{jsonObjList.add(obj);}}return jsonObjList;}/*** 将JSONObjec对象转换成Map-List集合* @param json* @return*/public static Map<String, Object> JsonToMap(JSONObject json){Map<String,Object> columnValMap = new HashMap<String,Object>();Set<Object> jsonKeys = json.keySet();for (Object key : jsonKeys) {Object JsonValObj = json.get(key);if(JsonValObj instanceof JSONArray){columnValMap.put((String)key, JsonToList((JSONArray) JsonValObj));}else if(key instanceof JSONObject){columnValMap.put((String)key, JsonToMap((JSONObject) JsonValObj));}else{columnValMap.put((String)key,JsonValObj);}}return columnValMap;}/*** 将json对象转换为map集合,通过此方法获取存放map集合键的list集合* @param obj* @return*/public static List<Object> mapKeys(Object obj){List<Object> keysList = new ArrayList<Object>();Map<String,Object> columnValMap = new HashMap<String,Object>();String columnStr = “column”;if(obj instanceof JSONArray){List<Map<String, Object>> jsonObjList = new ArrayList<Map<String, Object>> ();jsonObjList = (List<Map<String, Object>>) JsonToList((JSONArray) obj);columnValMap =(Map<String, Object>) (jsonObjList.get(0));//以上三句可优化为如下一句//columnValMap =(Map<String, Object>)(((List<Object>)JsonToList((JSONArray) obj)).get(0));}else if(obj instanceof JSONObject){columnValMap =JsonToMap((JSONObject) obj);}else{keysList.add(obj);}for(int i=0;i<columnValMap.keySet().size();i++){keysList.add(columnStr+(i+1));}System.out.println(keysList.size());return keysList;}}

2.通过使用谷歌的Gson来处理json字符串,谷歌的Gson针对封装的javaBean处理起来很方便,香港虚拟主机,但对于未封装的json字符串需要找到技巧处理起来也才能顺手。

使用谷歌的Gson当然也需要jar包的支持,这需要一个jar包:Gson.jar

下载地址:?name=google-gson-2.2.4-release.zip

示例:将通过js获取的json字符串转换为Map、List集合,代码如下:

package util;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.google.gson.Gson;public class JSONHelper {private Gson gson = new Gson();/*** 将json对象转换为map集合,通过此方法获取存放map集合键的list集合* @param obj* @return*/public static List<Object> mapKeys(Map<?,?> map){List<Object> keysList = new ArrayList<Object>();String columnStr=”column”;for(int i=0;i<map.keySet().size();i++){keysList.add(columnStr+(i+1));}System.out.println(keysList.size());return keysList;}/*** 将传入的json字符串转换为元素为map集合的List集合* @param jsonArrStr* @return*/public static List<Map<String, Object>> jsonObjList(String jsonArrStr) {List<Map<String, Object>> jsonObjList = new ArrayList<Map<String, Object>>();List<?> jsonList = Test.jsonToList(jsonArrStr);Gson gson = new Gson();for (Object object : jsonList) {String jsonStr = gson.toJson(object);Map<?, ?> json = Test.jsonToMap(jsonStr);jsonObjList.add((Map<String, Object>) json);}return jsonObjList;}/*** 将传入的json字符串解析为List集合* @param jsonStr* @return*/public static List<?> jsonToList(String jsonStr) {List<?> ObjectList = null;Gson gson = new Gson();java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<?>>() {}.getType();ObjectList = gson.fromJson(jsonStr, type);return ObjectList;}/*** 将传入的json字符串解析为Map集合* @param jsonStr* @return*/public static Map<?, ?> jsonToMap(String jsonStr) {Map<?, ?> ObjectMap = null;Gson gson = new Gson();java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<Map<?,?>>() {}.getType();ObjectMap = gson.fromJson(jsonStr, type);return ObjectMap;}}

3.使用最轻量级的org.json.jar实现json字符串和java对象之间的互转

所需jar包:org.json.jar

下载地址: 或第三方:

人生伟业的建立 ,不在能知,乃在能行。

Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】

相关文章:

你感兴趣的文章:

标签云: