特殊json字符串解析

xiaoxiao2021-02-27  317

String str="{\n" + " \"flag\": true,\n" + " \"msg\": \"成功\",\n" + " \"data\": {\n" + " \"orders\": {\n" + " \"2017-05-05\": [\n" + " {\n" + " \"PRICE\": 5.44,\n" + " \"ORDER_STATUS\": 1,\n" + " \"CUSTOMER_NAME\": \"黎叔\",\n" + " \"GASSTATION_ID\": 15,\n" + " \"CAR_ID\": 17,\n" + " \"COMPANY_ID\": 15,\n" + " \"COMPANY_NAME\": \"测试物流公司\",\n" + " \"ORDER_NO\": \"1493805638549\",\n" + " \"CREATE_USER_ID\": 1,\n" + " \"ORD_DATE\": \"2017-05-05\",\n" + " \"CUSTOMER_ID\": 1,\n" + " \"CAR_NUM\": \"京A10001\",\n" + " \"STAFF_ID\": 1,\n" + " \"TEAM_ID\": 17,\n" + " \"CREATE_USER_NAME\": \"1\",\n" + " \"DATE_KEY\": {\n" + " \"nanos\": 0,\n" + " \"time\": 1493913600000,\n" + " \"minutes\": 0,\n" + " \"seconds\": 0,\n" + " \"hours\": 0,\n" + " \"month\": 4,\n" + " \"year\": 117,\n" + " \"timezoneOffset\": -480,\n" + " \"day\": 5,\n" + " \"date\": 5\n" + " },\n" + " \"ID\": 29,\n" + " \"QTY\": 5,\n" + " \"TOTAL_PRICE\": 27.2,\n" + " \"STAFF_NAME\": \"1\",\n" + " \"TEAM_NAME\": \"测试车队一\",\n" + " \"CREATE_DATE\": {\n" + " \"nanos\": 0,\n" + " \"time\": 1493805639000,\n" + " \"minutes\": 0,\n" + " \"seconds\": 39,\n" + " \"hours\": 18,\n" + " \"month\": 4,\n" + " \"year\": 117,\n" + " \"timezoneOffset\": -480,\n" + " \"day\": 3,\n" + " \"date\": 3\n" + " },\n" + " \"RECEIPT_URL\": \"1493805647128.jpg\"\n" + " }\n" + " ],\n" + " \"2017-05-03\": [\n" + " {\n" + " \"PRICE\": 5.44,\n" + " \"ORDER_STATUS\": 1,\n" + " \"CUSTOMER_NAME\": \"黎叔\",\n" + " \"GASSTATION_ID\": 15,\n" + " \"CAR_ID\": 17,\n" + " \"COMPANY_ID\": 15,\n" + " \"COMPANY_NAME\": \"测试物流公司\",\n" + " \"ORDER_NO\": \"1493805059061\",\n" + " \"CREATE_USER_ID\": 1,\n" + " \"ORD_DATE\": \"2017-05-03\",\n" + " \"CUSTOMER_ID\": 1,\n" + " \"CAR_NUM\": \"京A10001\",\n" + " \"STAFF_ID\": 1,\n" + " \"TEAM_ID\": 17,\n" + " \"CREATE_USER_NAME\": \"1\",\n" + " \"DATE_KEY\": {\n" + " \"nanos\": 0,\n" + " \"time\": 1493805059000,\n" + " \"minutes\": 50,\n" + " \"seconds\": 59,\n" + " \"hours\": 17,\n" + " \"month\": 4,\n" + " \"year\": 117,\n" + " \"timezoneOffset\": -480,\n" + " \"day\": 3,\n" + " \"date\": 3\n" + " },\n" + " \"ID\": 28,\n" + " \"QTY\": 2,\n" + " \"TOTAL_PRICE\": 10.88,\n" + " \"STAFF_NAME\": \"1\",\n" + " \"TEAM_NAME\": \"测试车队一\",\n" + " \"CREATE_DATE\": {\n" + " \"nanos\": 0,\n" + " \"time\": 1493805059000,\n" + " \"minutes\": 50,\n" + " \"seconds\": 59,\n" + " \"hours\": 17,\n" + " \"month\": 4,\n" + " \"year\": 117,\n" + " \"timezoneOffset\": -480,\n" + " \"day\": 3,\n" + " \"date\": 3\n" + " },\n" + " \"RECEIPT_URL\": \"1493806771838.jpg\"\n" + " },\n" + " {\n" + " \"PRICE\": 5.44,\n" + " \"ORDER_STATUS\": 1,\n" + " \"CUSTOMER_NAME\": \"黎叔\",\n" + " \"GASSTATION_ID\": 15,\n" + " \"CAR_ID\": 17,\n" + " \"COMPANY_ID\": 15,\n" + " \"COMPANY_NAME\": \"测试物流公司\",\n" + " \"ORDER_NO\": \"1493805828238\",\n" + " \"CREATE_USER_ID\": 1,\n" + " \"ORD_DATE\": \"2017-05-03\",\n" + " \"CUSTOMER_ID\": 1,\n" + " \"CAR_NUM\": \"京A10001\",\n" + " \"STAFF_ID\": 1,\n" + " \"TEAM_ID\": 17,\n" + " \"CREATE_USER_NAME\": \"1\",\n" + " \"DATE_KEY\": {\n" + " \"nanos\": 0,\n" + " \"time\": 1493740800000,\n" + " \"minutes\": 0,\n" + " \"seconds\": 0,\n" + " \"hours\": 0,\n" + " \"month\": 4,\n" + " \"year\": 117,\n" + " \"timezoneOffset\": -480,\n" + " \"day\": 3,\n" + " \"date\": 3\n" + " },\n" + " \"ID\": 30,\n" + " \"QTY\": 8,\n" + " \"TOTAL_PRICE\": 43.52,\n" + " \"STAFF_NAME\": \"1\",\n" + " \"TEAM_NAME\": \"测试车队一\",\n" + " \"CREATE_DATE\": {\n" + " \"nanos\": 0,\n" + " \"time\": 1493805828000,\n" + " \"minutes\": 3,\n" + " \"seconds\": 48,\n" + " \"hours\": 18,\n" + " \"month\": 4,\n" + " \"year\": 117,\n" + " \"timezoneOffset\": -480,\n" + " \"day\": 3,\n" + " \"date\": 3\n" + " },\n" + " \"RECEIPT_URL\": \"1493806823526.jpg\"\n" + " }\n" + " ]\n" + " }\n" + " }\n" + "}";

代码:

CommonJSONParser commonJSONParser = new CommonJSONParser(); Map<String, Object> result = commonJSONParser.parse(str); for (Map.Entry<String, Object> entry : result.entrySet()) { System.out.println("key= " + entry.getKey()); } CommonJSONParser commonJSONParser1 = new CommonJSONParser(); Map<String, Object> result1 = commonJSONParser1.parse(result.get("data").toString()); for (Map.Entry<String, Object> entry : result1.entrySet()) { System.out.println("key1= " + entry.getKey()); } CommonJSONParser commonJSONParser2 = new CommonJSONParser(); Map<String, Object> result2 = commonJSONParser2.parse(result1.get("orders").toString()); for (Map.Entry<String, Object> entry : result2.entrySet()) { System.out.println("key2= " + entry.getKey()); System.out.println("........."+entry.getValue()); } // int num = result.length(); JSONArray nameList = null;//获取JSONArray try { JSONObject result3 = new JSONObject(result1.get("orders").toString());//转换为JSONObject nameList = result3.getJSONArray("2017-05-03"); int length = nameList.length(); String aa = ""; for(int i = 0; i < length; i++) {//遍历JSONArray JSONObject oj = null; try { oj = nameList.getJSONObject(i); aa = aa + oj.getString("CUSTOMER_NAME")+"|"; Log.d("debugTest",Integer.toString(i)+" aa-- "+aa); System.out.println("......debugTest1111........"+Integer.toString(i)+" aa-- "+aa); } catch (JSONException e) { e.printStackTrace(); } } // Iterator<?> it = result3.keys(); // String aa2 = ""; // String bb2 = null; // while(it.hasNext()){//遍历JSONObject // bb2 = (String) it.next().toString(); // try { // aa2 = aa2 + result3.getString(bb2); // System.out.println("....debugTest2222....."+bb2+" -- "+aa2); // } catch (JSONException e) { // e.printStackTrace(); // } // // } } catch (JSONException e) { e.printStackTrace(); }

帮助类:

import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; /** * Created by lys13 on 2017/5/4. */ public class CommonJSONParser { 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 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; } 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; } }

log:

转载请注明原文地址: https://www.6miu.com/read-2277.html

最新回复(0)