解析JSON格式数据

发布时间:2017-2-27 3:23:23 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"解析JSON格式数据",主要涉及到解析JSON格式数据方面的内容,对于解析JSON格式数据感兴趣的同学可以参考一下。

package com.ep.messageservice.base; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import org.apache.commons.lang.StringEscapeUtils; import org.apache.log4j.Logger; import net.sf.json.JSONArray; import net.sf.json.JSONObject; /** * JSON数据组装帮助类,查询操作为调用端返回JSON格式结果 * @author wustrive_2008 * @date 2012-9-10 * @time 上午10:58:35 * @version 1.1 * @tags */ public class JSONUtil { private static final Logger log = Logger.getLogger(JSONUtil.class); /** * 解析JSON格式数据,使用json-lib开源包解析json格式字符串,返回MessageID列表 * @param jsonStr json格式字符串 * @return ArrayList<String> List格式的MessageID列表 * */ public static ArrayList<String> parserJSON(String jsonStr){ ArrayList<String> messageIDList = new ArrayList<String>(); if(jsonStr.contains("{\"")){ String info = jsonStr; JSONObject jsonob = JSONObject.fromObject(info); JSONArray jsons = jsonob.getJSONArray("info"); for (int i = 0; i < jsons.size(); i++) { JSONObject tempJson = JSONObject.fromObject(jsons.get(i)); String messageID = StringEscapeUtils.escapeSql(tempJson.getString("megid")); messageIDList.add(messageID); } } return messageIDList; } /** * 解析json * 格式:{"errorCode":"00","info":[{"name":"zhangsan","age":"20"},{"name":"lisi","age":"22"}...]} */ public static ArrayList<LinkedHashMap<String,String>> parserJSON2(String jsonStr){ ArrayList<LinkedHashMap<String,String>> resultList = new ArrayList<LinkedHashMap<String,String>>(); if(jsonStr.equals("{\"errorCode\":\"00\"}")){ return resultList; } if(jsonStr.contains("{\"")){ String info = jsonStr; JSONObject jsonob = JSONObject.fromObject(info); String errorCode = (String)jsonob.get("errorCode"); if(errorCode.equals("00")){ JSONArray jsons = jsonob.getJSONArray("info"); for (int i = 0; i < jsons.size(); i++) { //list的循环,即{"name":"zhangsan","age":"20"},{"name":"lisi","age":"22"}...的循环 LinkedHashMap<String, String> linekMap = new LinkedHashMap<String, String>(); JSONObject tempJson = JSONObject.fromObject(jsons.get(i));//得到一个{"name":"zhangsan","age":"20"} Iterator<Map.Entry<String, String>> iter = tempJson.entrySet().iterator(); //获得map的迭代器,用作遍历map中的每一个键值对 迭代元素本身就是一个Entry键值对 //map.entrySet()是把HashMap类型的数据转换成集合类型 map.entrySet().iterator()是去获得这个集合的迭代器 //keySet获得的只是key值的集合,valueSet获得的是value集合,entryset获得的是键值对的集合。 while (iter.hasNext()) {//"name":"zhangsan"循环,即一个Map中多个key:value的循环 try { Map.Entry<String, String> entry = (Map.Entry<String, String>) iter.next(); String key = entry.getKey(); String value = URLDecoder.decode(entry.getValue(),"utf-8"); linekMap.put(key, value); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } resultList.add(linekMap); } } } return resultList; } }

上一篇:Servlet:response生成图片验证码
下一篇:Win32 Series - Keystroke Messages

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。