蓝羊羊的gravatar头像
蓝羊羊 2016-10-27 11:31:20

java如何解析json数据并且保存到数据库?

data字段格式
{
"phone": ["xxxxxxxx","xxxxxx","+xxxxxx"],
"qq": ["xxxxx", "xxxxx", "xxxx"],
"id_card": "xxxxxx",
"address": "xxxxxx"
}

求这样的json格式解析添加数据库方法,谢谢

所有回答列表(5)
程序猿全敏的gravatar头像
程序猿全敏  LV29 2016年10月27日

你可以看看我的分享啊!有专门的json转对象的工具类,当页面传数据到action,调用json转换工具类转换成Object对象,然后通过dao层save方法保存到数据库。给你一个

package com.shscn;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

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


/**
 * JSON字符串生成类
 * @author qm 
 */
public class JsonUtil {
	/** 实体类转换为JSON */
	public static String toJson(Object obj){
		if(obj == null) {
			return "{}";
		}
		JSONObject jo = new JSONObject(obj);
		return jo.toString();
	}
	
	/** list转换为JSON */
	public static String toJson(Collection<?> coll) {
		if(coll == null) {
			return "[]";
		}
		JSONArray ja = new JSONArray(coll);
		return ja.toString();
	}
	
	/** map转换为JSON */
	public static <K, V> String toJson(Map<K, V> map) {
		if(map == null) {
			return "{}";
		}
		List<Map<K, V>> list = new ArrayList<Map<K, V>>();
		list.add(map);
		String str = JsonUtil.toJson(list);
		return str.substring(1, str.length()-1);
	}
	
	/**
	 * JSON转换为map
	 * @param json
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <K, V> Map<K, V> toMap(String json) {
		return new JSONObject(json).getMap();
	}
	
	 /**
     * 将json字符串转换为List集合
     * @param jsonArrStr
     * @return
     */
    @SuppressWarnings("unchecked")
	public static List<Map<String, Object>> jsonObjList(String jsonArrStr) {
        List<Map<String, Object>> jsonList = new ArrayList<Map<String, Object>>();
        JSONArray jsonArr = null;
        try {
            jsonArr = new JSONArray(jsonArrStr);
            jsonList = (List<Map<String, Object>>)JsonUtil.jsonToList(jsonArr);
        } catch (JSONException e) {
            System.out.println("Json字符串转换异常!");
            e.printStackTrace();
        }
        return jsonList;
    }
    
    /**
     * 将传递近来的json数组转换为List集合
     * @param jsonArr
     * @return
     * @throws JSONException
     */
    private static List<?> jsonToList(JSONArray jsonArr)
            throws JSONException {
        List<Object> jsonToMapList = new ArrayList<Object>();
        for (int i = 0; i < jsonArr.length(); i++) {
            Object object = jsonArr.get(i);
            if (object instanceof JSONArray) {
                jsonToMapList.add(JsonUtil.jsonToList((JSONArray) object));
            } else if (object instanceof JSONObject) {
                jsonToMapList.add(JsonUtil.jsonToMap((JSONObject) object));
            } else {
                jsonToMapList.add(object);
            }
        }
        return jsonToMapList;
    }
    
    /**
     * 将传递近来的json对象转换为Map集合
     * @param jsonObj
     * @return
     * @throws JSONException
     */
    @SuppressWarnings("unchecked")
    private static Map<String, Object> jsonToMap(JSONObject jsonObj)
            throws JSONException {
        Map<String, Object> jsonMap = new HashMap<String, Object>();
        Iterator<String> jsonKeys = jsonObj.keys();
        while (jsonKeys.hasNext()) {
            String jsonKey = jsonKeys.next();
            Object jsonValObj = jsonObj.get(jsonKey);
            if (jsonValObj instanceof JSONArray) {
                jsonMap.put(jsonKey, JsonUtil.jsonToList((JSONArray) jsonValObj));
            } else if (jsonValObj instanceof JSONObject) {
                jsonMap.put(jsonKey, JsonUtil.jsonToMap((JSONObject) jsonValObj));
            } else {
                jsonMap.put(jsonKey, jsonValObj);
            }
        }
        return jsonMap;
    }
	
}
评论(0) 最佳答案
dahjkhk的gravatar头像
dahjkhk  LV2 2016年10月27日

http://blog.csdn.net/my_lord_/article/details/50612863

咖啡没有猫的gravatar头像
咖啡没有猫  LV2 2016年10月27日

json 转对象

zdd123456的gravatar头像
zdd123456  LV9 2016年10月28日

JSONOBJECT

zuiyang的gravatar头像
zuiyang  LV2 2016年11月3日

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${fasterxml.version}</version>
</dependency>
ds 
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友