zoukankan      html  css  js  c++  java
  • 一个强大的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;
        }
    }
  • 相关阅读:
    LGPrep的一点小问题
    百度地图API的事件处理:覆盖物阻止冒泡
    HTML5截取视频第一帧作为预览图片
    20165105 第二周学习总结
    20165105课下作业
    20165105第一周学习查缺补漏
    第四周课下作业20165105
    20165105 201620172 《Java程序设计》第1周学习总结
    我期望的师生关系
    .NET使用NPOI组件将数据导出Excel
  • 原文地址:https://www.cnblogs.com/bobodeboke/p/3208520.html
Copyright © 2011-2022 走看看