강력한 json 해석 도구 클래스

7814 단어 json 해석
이 도구류는 귀속 원리를 이용하여 임의의 구조의 json 문자열을 해석할 수 있다.물론 대응하는 실체 대상으로 해석해야 할 때는 사용할 수 없다
package com.wot.cloudsensing.carrotfarm.util;



import java.util.ArrayList;

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 map java   : CommonJSONParser commonJSONParser = new

 * CommonJSONParser(); Map<String, Object> result =

 * commonJSONParser.parse(jsonDataStr);

 * 

 */

public class JSonParserUtil {

    public Map<String, Object> parse(String jsonStr) {



        Map<String, Object> result = null;



        if (null != jsonStr) {

            try {



                JSONObject jsonObject = new JSONObject(jsonStr);

                result = parseJSONObject(jsonObject);



            } catch (JSONException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

        } // if (null != jsonStr)



        return result;

    }



    private Map<String, Object> parseJSONObject(JSONObject jsonObject)

            throws JSONException {

        Map<String, Object> valueObject = null;

        if (null != jsonObject) {

            valueObject = new HashMap<String, Object>();



            Iterator<String> keyIter = jsonObject.keys();

            while (keyIter.hasNext()) {

                String keyStr = keyIter.next();

                Object itemObject = jsonObject.opt(keyStr);

                if (null != itemObject) {

                    valueObject.put(keyStr, parseValue(itemObject));

                } // if (null != itemValueStr)



            } // while (keyIter.hasNext())

        } // if (null != valueStr)



        return valueObject;

    }



    private Object parseValue(Object inputObject) throws JSONException {



        Object outputObject = null;

        if (null != inputObject) {



            if (inputObject instanceof JSONArray) {

                outputObject = parseJSONArray((JSONArray) inputObject);

            } else if (inputObject instanceof JSONObject) {

                outputObject = parseJSONObject((JSONObject) inputObject);

            } else if (inputObject instanceof String

                    || inputObject instanceof Boolean

                    || inputObject instanceof Integer) {

                outputObject = inputObject;

            }



        }



        return outputObject;

    }



    private List<Object> parseJSONArray(JSONArray jsonArray)

            throws JSONException {



        List<Object> valueList = null;



        if (null != jsonArray) {

            valueList = new ArrayList<Object>();



            for (int i = 0; i < jsonArray.length(); i++) {

                Object itemObject = jsonArray.get(i);

                if (null != itemObject) {

                    valueList.add(parseValue(itemObject));

                }

            } // for (int i = 0; i < jsonArray.length(); i++)

        } // if (null != valueStr)



        return valueList;

    }

}

좋은 웹페이지 즐겨찾기