1. 程式人生 > >Java構造和解析Json資料的兩種方法詳解二

Java構造和解析Json資料的兩種方法詳解二

複製程式碼
package com.json;

import java.lang.reflect.Method;
import java.text.ParseException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.json.JSONException;
import org.json.JSONObject;

/**
 * 
 * 1:將JavaBean轉換成Map、JSONObject
 * 2:將Map轉換成Javabean
 * 3:將JSONObject轉換成Map、Javabean
 * 
 * 
@author Alexia */ public class JsonHelper { /** * 將Javabean轉換為Map * * @param javaBean * javaBean * @return Map物件 */ public static Map toMap(Object javaBean) { Map result = new HashMap(); Method[] methods = javaBean.getClass().getDeclaredMethods();
for (Method method : methods) { try { if (method.getName().startsWith("get")) { String field = method.getName(); field = field.substring(field.indexOf("get") + 3); field = field.toLowerCase().charAt(0) + field.substring(1); Object value
= method.invoke(javaBean, (Object[]) null); result.put(field, null == value ? "" : value.toString()); } } catch (Exception e) { e.printStackTrace(); } } return result; } /** * 將Json物件轉換成Map * * @param jsonObject * json物件 * @return Map物件 * @throws JSONException */ public static Map toMap(String jsonString) throws JSONException { JSONObject jsonObject = new JSONObject(jsonString); Map result = new HashMap(); Iterator iterator = jsonObject.keys(); String key = null; String value = null; while (iterator.hasNext()) { key = (String) iterator.next(); value = jsonObject.getString(key); result.put(key, value); } return result; } /** * 將JavaBean轉換成JSONObject(通過Map中轉) * * @param bean * javaBean * @return json物件 */ public static JSONObject toJSON(Object bean) { return new JSONObject(toMap(bean)); } /** * 將Map轉換成Javabean * * @param javabean * javaBean * @param data * Map資料 */ public static Object toJavaBean(Object javabean, Map data) { Method[] methods = javabean.getClass().getDeclaredMethods(); for (Method method : methods) { try { if (method.getName().startsWith("set")) { String field = method.getName(); field = field.substring(field.indexOf("set") + 3); field = field.toLowerCase().charAt(0) + field.substring(1); method.invoke(javabean, new Object[] { data.get(field) }); } } catch (Exception e) { } } return javabean; } /** * JSONObject到JavaBean * * @param bean * javaBean * @return json物件 * @throws ParseException * json解析異常 * @throws JSONException */ public static void toJavaBean(Object javabean, String jsonString) throws ParseException, JSONException { JSONObject jsonObject = new JSONObject(jsonString); Map map = toMap(jsonObject.toString()); toJavaBean(javabean, map); } }
複製程式碼