最近做公司项目安排做后台,因为写接口给别人用,就不能随随便便返回数据与接收数据了,为了统一性,要求统一用json来传输数据,为了方便后期的代码的维护以及代码的简洁,笔者整理了一下json与List、Map之间相互转换的方法统一封装成一个类,需要的拿走

所需的jar包:请自行搜索相关的jar包

下面是笔者整理的工具类,喜欢的拿走吧~

package com.utils;import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.collections.map.ListOrderedMap;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;/*** * 处理json的工具类. <br>* 本类为处理json的工具类* * @author ahk*/
public class JsonTools {/*** * json转换list. <br>* 详细说明* * @param jsonStr*            json字符串* @return* @return List<Map<String,Object>> list* @throws @author*             ahk* @date 2013年12月24日 下午1:08:03*/public static List<Map<String, Object>> parseJSON2List(String jsonStr) {JSONArray jsonArr = JSONArray.fromObject(jsonStr);List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Iterator<JSONObject> it = jsonArr.iterator();while (it.hasNext()) {JSONObject json2 = it.next();list.add(parseJSON2Map(json2.toString()));}return list;}/*** * json转换map. <br>* 详细说明* * @param jsonStr*            json字符串* @return* @return Map<String,Object> 集合* @throws @author*             ahk*/public static Map<String, Object> parseJSON2Map(String jsonStr) {ListOrderedMap map = new ListOrderedMap();// 最外层解析JSONObject json = JSONObject.fromObject(jsonStr);for (Object k : json.keySet()) {Object v = json.get(k);// 如果内层还是数组的话,继续解析if (v instanceof JSONArray) {List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Iterator<JSONObject> it = ((JSONArray) v).iterator();while (it.hasNext()) {JSONObject json2 = it.next();list.add(parseJSON2Map(json2.toString()));}map.put(k.toString(), list);} else {map.put(k.toString(), v);}}return map;}/*** * 通过HTTP获取JSON数据. <br>* 通过HTTP获取JSON数据返回list* * @param url*            链接* @return* @return List<Map<String,Object>> list* @throws @author*             ahk*/public static List<Map<String, Object>> getListByUrl(String url) {try {// 通过HTTP获取JSON数据InputStream in = new URL(url).openStream();BufferedReader reader = new BufferedReader(new InputStreamReader(in));StringBuilder sb = new StringBuilder();String line;while ((line = reader.readLine()) != null) {sb.append(line);}return parseJSON2List(sb.toString());} catch (Exception e) {e.printStackTrace();}return null;}/*** * 通过HTTP获取JSON数据. <br>* 通过HTTP获取JSON数据返回map* * @param url*            链接* @return* @return Map<String,Object> 集合* @throws @author*             ahk*/public static Map<String, Object> getMapByUrl(String url) {try {// 通过HTTP获取JSON数据InputStream in = new URL(url).openStream();BufferedReader reader = new BufferedReader(new InputStreamReader(in));StringBuilder sb = new StringBuilder();String line;while ((line = reader.readLine()) != null) {sb.append(line);}return parseJSON2Map(sb.toString());} catch (Exception e) {e.printStackTrace();}return null;}/*** * map转换json. <br>* 详细说明* * @param map*            集合* @return* @return String json字符串* @throws @author*             ahk*/public static String mapToJson(Map<String, Object> map) {JSONObject jsonarray = JSONObject.fromObject(map);  return jsonarray.toString().trim();}/*** * List<Map<String, Object>>转换json. <br>* 详细说明* * @param List*            集合* @return* @return String json字符串* @throws @author*             ahk*/public static <T> String listToJson(List<T> ts) {JSONArray jsonarray = JSONArray.fromObject(ts);  return jsonarray.toString().trim();}// testpublic static void main(String[] args) {String jsonStr = "{\"ordersale\":\"15066226204\",\"o_name\":\"咖喱鸡\",\"orderpeople\":\"15621182793\",\"pay_status_id\":2,\"o_img1\":\"http://niu.dingdao8.com/FtsRcfTvrQkF953DWfTUH6xDNDh3\",\"goodsList\":[{\"goods_name\":\"德炎 麻辣小龙虾 900g 6-8钱/12-17只 海鲜水产\",\"goods_rule\":\"{}\",\"o_order_id\":\"20181009093210953000\",\"gid\":162,\"goods_price\":36.0,\"goods_select\":\"{}\",\"goods_count\":2,\"detail_id\":30,\"goods_img\":\"http://niu.dingdao8.com/BEC6DD2740914D23975CDF26409AEFD7_CD4A997F457041A19F37C3690DA41212_龙虾1.jpg\"}],\"o_img2\":\"无\",\"o_consignee\":\"ahk\",\"oid\":164,\"enterprise_id\":3082,\"o_regtime\":1539048732000,\"o_cycle\":27,\"payamount\":0.0,\"o_type\":2,\"o_desc\":\"him红\",\"o_order_id\":\"20181009093210953000\",\"order_arrears\":72.0,\"o_money\":72.0,\"o_phone\":\"15621182793\",\"o_img3\":\"无\",\"o_img4\":\"无\",\"o_address\":\"西海岸一号407\",\"OrderModify\":[{\"o_order_id\":\"20181009093210953000\",\"updatecontent\":\"来了\",\"updatetype\":1,\"o_modifier\":\"15066226204\",\"updatetime\":1539048783000},{\"o_order_id\":\"20181009093210953000\",\"updatecontent\":\"72.0\",\"updatetype\":0,\"updatetime\":1539048825000},{\"o_order_id\":\"20181009093210953000\",\"updatecontent\":\"你好\",\"updatetype\":1,\"o_modifier\":\"15066226204\",\"updatetime\":1539049122000}],\"o_ctime\":1539048732000}";Map<String, Object> list = parseJSON2Map(jsonStr);System.out.println(list);String json1 = "[{\"goods_name\":\"小米电视4A32英寸\",\"goods_rule\":[{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"骁龙845旗舰处理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"骁龙845旗舰处理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"骁龙845旗舰处理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"骁龙845旗舰处理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"骁龙845旗舰处理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"骁龙845旗舰处理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"骁龙845旗舰处理器\":550}],\"gid\":153,\"goods_price\":999,\"goods_select\":[{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"骁龙845旗舰处理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"骁龙845旗舰处理器\":550},{\"8GB+128GB\":700,\"6.21英寸三星AMOLED屏幕\":1100,\"骁龙845旗舰处理器\":550}],\"goods_count\":1}]";List<Map<String, Object>> list2 = parseJSON2List(json1);System.out.println(list2);String json = mapToJson(list);System.out.println(json.trim());String jsonList = listToJson(list2);System.out.println(jsonList);}
}

写的不好,大家凑活看,如果有什么好的建议,请大家留言交流,共同进步~

List、Map 与json转换的工具类相关推荐

  1. Json转换对象工具类

    1.pom引入 <dependency><groupId>org.codehaus.jackson</groupId><artifactId>jacks ...

  2. 处理json数据格式的工具类

    package com.itheima.utils;import java.util.List; import java.util.Map;import net.sf.json.JSONArray; ...

  3. json转换成dart类 JSON to Dart

    json_to_dart的使用 如果我们得到一个特别复杂的JSON,有时候会无从下手开始写Model,这时候就可以使用一些辅助工具.我认为json_to_dart是比较好用的一个.它可以直接把json ...

  4. xml与json互转 C语言实现,通过json-lib、jdom及xom定义XML和JSON格式处理工具类实现xml和json间相互转换...

    一.前言 通过json-lib-2.3.jar(jar及pom文件下载).jdom-1.0.jar(jar及pom文件下载).xom-1.0.jar依赖包(jar及pom文件下载)定义JSON和XML ...

  5. json转换成实体类

    今天同事问我个问题.她需要把字符串的json转换成实体类,但是一直报错.主要是实体类当中的内部类需要用静态字段static修饰,否则无法访问. 以下是报错信息 org.codehaus.jackson ...

  6. Java汉字转换拼音工具类

    1. 使用pinyin4j 1.1 引入相关maven依赖 <dependency><groupId>com.belerweb</groupId><artif ...

  7. JAVA实现 PDF转换 常用工具类(html转PDF、PDF添加页码、PDF文件下载、PDF添加印章或者水印)

    JAVA实现 PDF转换 常用工具类(html转PDF.PDF添加页码.PDF文件下载.PDF添加印章或者水印)可直接使用 package com.bestvike.util; import com. ...

  8. java json帮助类_java 写一个JSON解析的工具类

    上面是一个标准的json的响应内容截图,第一个红圈"per_page"是一个json对象,我们可以根据"per_page"来找到对应值是3,而第二个红圈&quo ...

  9. 上传PDF文件转换图片工具类

    一,pdf图片转换工具 import org.apache.http.entity.ContentType; import org.apache.pdfbox.pdmodel.PDDocument; ...

最新文章

  1. ARP(Accounting Resource Planning)项目感想
  2. 我理解的 iOS 与 Android 的区别
  3. mysql 按重复排序_php-按日期排序并允许重复的日期时,获取MySQL中的上一个和下一个记录...
  4. 怎样从10亿查询词找出出现频率最高的10个
  5. 项目怎么部署到服务器上_项目开发学习 云服务器的部署
  6. 双十一!教你用Python感知女朋友的情绪变化?
  7. MyBatis 哪些地方用到了代理模式?
  8. mysql delete 表关联删除数据_mysql delete 多表连接删除功能
  9. Wizard of Orz CodeForces - 1467A
  10. html中的保存功能代码怎么写,java保存html代码怎么写
  11. Java面试题目,java工程师成神之路
  12. 什么是YARN?跟HBase和Spark比优势在哪?终于有人讲明白了
  13. 兰空图床Lsky Pro 免费开源图床网站程序v1.6.3
  14. redis的持久化之RDB的配置和原理
  15. windows openssl环境变量_run custom build command for `openssl-sys v0.9.55`
  16. 并发重复请求,这才是优雅的处理方式!
  17. vlfeat matlab怎么用,VLFeat在matlab中的使用
  18. URP管线理解(一)宏观入口
  19. 实践三 网络嗅探与协议分析
  20. 用SAPI做一个聊天模拟器

热门文章

  1. 《控制论导论》读书:基本概念
  2. u 盘安装linux系统,CentOS 7 系统安装之 U 盘安装法
  3. php暴力引流代码,利用霸屏暴力引流,免费分享霸屏代码
  4. 深度分析:多元化布局或成香飘飘营销转型的重要一环
  5. 使用matlab求高阶累积量
  6. 机器学习中 熵的理解
  7. Word如何设置单元格垂直居中
  8. 详解联通无线上网资费:
  9. 《文明3》全攻略之设置篇
  10. 漫画趣解Linux内核