Map与JSONObject对象相互转换记录_gm371200587的博客-程序员宝宝_map转jsonobject

技术标签: java  map转换json  开发技术  工具  json转换map  

业务背景:因为要嵌套一些数据报表,页面点击菜单直接进行url访问,因访问受限要修改url权限,返回数据是JSONObject,防止出现异常,后台进行了一些Map于JSONObject的转换,记录下来

配置得json文件格式:

{"redashLinks": [
        {
            "name": "在盈利表",
            "url": "http://ip/public/dashboards/share/fQUPgt8oLyuunojAEVUzsGn8G9bOYVNFl2KuZzsv"
        },
        {
            "name": "在亏损表",
            "url": "http://ip/public/dashboards/share/qDsDeOM0JMomy3ZgCEhxnPYWgzCpiMp93KfYRvhT"
        }
    ]
}

将得到的json数据转换处理

// jsonobject 转换 map
		Map<String,Object> jsonMap = jsonStrToMap(jsonObjFromResource);
// map 转换 String
		ObjectMapper mapper = new ObjectMapper();
		String writeValueAsString = mapper.writeValueAsString(jsonMap);
// String 转换 JSONObject
		return JSONObject.parseObject(writeValueAsString);

 

第一步:将获取得jsonobject转换map,在url中改造

引入的都是util的包

 

/** 
	* json转换改造url
	* @param json 获取得json文件
	* @return
	*/
	@SuppressWarnings("unchecked")
	private Map<String,Object> jsonStrToMap(JSONObject json) {
		Map<String, String> apiKey = getApiKey();
		Map<String, Object> data = new HashMap<>();// 循环转换
		Iterator<Entry<String, Object>> it = json.entrySet().iterator();
		while (it.hasNext()) {
			List<Map<String, String>> listMap = new ArrayList<Map<String, String>>();
			Map.Entry<String, Object> entry = (Entry<String, Object>) it.next();
			List<Map<String, String>> list = (List<Map<String, String>>) entry.getValue();
			for (Map<String, String> map : list) {
				Map<String, String> newMap = new HashMap<String,String>();
				StringBuffer str = new StringBuffer();
				/* 地址拼接key */
				str.append(map.get("url"));
				str.append("?key=");
				str.append(apiKey.get("api_key"));
				newMap.put(map.get("name"), str.toString());
				listMap.add(newMap);

			}
			data.put(entry.getKey(), listMap);
		}
		return data;

	}

第二步,将返回的map转回jsonobject

引入的包:import com.fasterxml.jackson.databind.ObjectMapper;   pom中的包路径见下方

        ObjectMapper mapper = new ObjectMapper();
		String writeValueAsString = mapper.writeValueAsString(jsonMap);

转换完成后发现是String类型,加一步 String转换jsonObject

JSONObject.parseObject(writeValueAsString)

pom中引用的包路径:

    <!-- jackson json 优化缓存对象序列化 -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.8</version>
      <scope>compile</scope>
    </dependency>


        <dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.7</version>
		</dependency>

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gm371200587/article/details/101268078

智能推荐

推荐 :利用Auto ARIMA构建高性能时间序列模型(附Python和R代码)_数据分析v的博客-程序员宝宝

作者:AISHWARYA SINGH;翻译:陈之炎;校对:丁楠雅本文共3400字,建议阅读10+分钟。本文介绍了ARIMA的概念,并带你用Python和R训练一个数据集实...

Python学习笔记之一——变量和简单数据类型_LeoZhang0822的博客-程序员宝宝

1、变量      message=&quot;Hello Python World!&quot;      print(message)2、字符串      name=&quot;ada lovelace&quot;      print(name.title())   #输出Ada Lovelace      print(name.upper())  #输出ADA LOVELACE      print(...

剑指offer系列-T9_2青蛙跳台阶(上)_右上角徐的博客-程序员宝宝

/** * @author xhl * 跳台阶 * 题目描述 *一只青蛙一次可以跳上1级台阶,也可以跳上2级。 *求该青蛙跳上一个n级的台阶总共有多少种跳法。 */public class offerT9_2 { /** * @param args * */ int FrogJump(int n) { if (n == 1) return 1; in

C++ 字节对齐与结构体/共用体的大小__NJZY_的博客-程序员宝宝

转载自 http://pppboy.blog.163.com/blog/static/30203796201082494026399/一、解释 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放

塔式计算机sata3内部硬盘,巧用固态硬盘 解决PC用户3大疑难杂症_痔知识的博客-程序员宝宝

现在已是移动互联网时代,近期风靡的股票市场吸引万千股民,拿手机炒股票很快显出短板,屏幕不够大,字看得费劲,可视操作面积小。不少股票用户把尘封已久的台式机电脑、笔记本电脑重新拿出来使用,别说,这些老电脑质量杠杠的,美中不足的就是用户在使用PC过程中,用户经常会遇到下午程序卡死、玩游戏换关卡过慢、笔记本不好用等问题,怎么解决?巧用固态硬盘解决PC用户3大疑难杂症不少用户的第一反应,装个新电脑!在彪红...

不明原发位肿瘤溯源-小思路_如意的小家的博客-程序员宝宝

1.PL-L1定量判断通过图灵读片测试对人工智能机器判读出的PD-L1的肿瘤比例分数(TPS,tumor proportion score)进行图灵测试。PD-L1作为2019年两位诺奖获得者所发现的重要的肿瘤标志物,在免疫治疗药物中受到极大的关注,对应PD-1/PD-L1靶点的免疫治疗药物,其疗效也得到了广泛的验证和认可。以PD-1/PD-L1作为免疫检查点抑制剂的伴随诊断检测,其定量难、判读久、结果稳定性差的特点,使得PD-L1的精准判读成为病理医生日常工作当中新的痛点。因此,基于人工智能技术的精准定

随便推点

锁表处理 SQL 错误: ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效..._weixin_34199335的博客-程序员宝宝

问题描述有时候ORACLE数据的某些表由于频繁操作,而且比较大,会导致锁表(死锁)。问题分析(1)锁的分析ORACLE里锁有以下几种模式:0:none1:null 空2:Row-S 行共享(RS):共享表锁,sub share3:Row-X 行独占(RX):用于行的修改,sub exclusive4:Share 共享锁(S):阻止其他DML操作,share5:S/Row-X 共享行独占(SRX...

关于MTK 平台上默认打开wifi ,和默认关闭数据流量_JackLee86的博客-程序员宝宝

在android 源码中,Settings中的大部分设置都可以在framework/base/package/....下面的default.xml文件中找到默认配置,然后在/framework路径下,有一个DatabaseHelper类,把这些数据加载到数据库中,以备在系统第一次启动,或以后启动中进行调用。...

css3属性transform-origin属性讲解_cdgogo的博客-程序员宝宝_transform-origin属性

transform是CSS3里的变换属性,常用的有translate(平移)、rotate(旋转)、skew(倾斜)、scale(缩放)方法。而transform-origin并不是transform的属性值,其具有独立的语法,但值得注意的是,transform-origin必须配合transform来使用,这个从名字也可以看得出来,就是给transform设置的各种动作设置一个参考点。默认情况下,元素的动作参考点为元素盒子的中心。transform可以设置九个位置的值,水平方向有left | cente.

科普:国产芯片、芯片生产设备、通讯标准前世今生(转载)_lcyberneticsf的博客-程序员宝宝

一、 指令集  (一)、名词解释:指令集是计算机体系结构中与程序设计有关的部分,包含了基本数据类型、指令集、寄存器、寻址模式、中断、异常处理以及外部的I/O。指令集架构包含一系列的opcode即操作码(机器语言),以及由特定处理器执行的基本命令。  通俗理解就是一套技术标准,是计算机能的一种机器语言,命令计算机做读取写入 以及做更复杂运算的一套命令标准。  (二)、指令集可以分为复杂指

端口扫描 -- Rapid Scanner_web安全工具库的博客-程序员宝宝

相片和音乐,是有记忆功能的,前两天和好朋友去小卖铺买了一根棒冰,走过操场和篮球架,走过画室,也去食堂打了一次饭,就和一年前平淡无奇的每一天一样,所有细碎的过往和经历就这么纷至沓来,学生时代,大概是最好的时代了吧。。。今天给大家推荐一款端口扫描工具:Rapid Scanner一、环境:win7二、用法禁止非法,后果自负欢迎关注公众号:web安全工具库...

【每日新闻】2017年亚马逊研发投入排世界第一,超过华为、BAT 总和 | 数人云宣布与UMCloud合并..._Z1Y492Vn3ZYD9et3B06的博客-程序员宝宝

每一个企业级的人  都置顶了 中国软件网中国软件网  为你带来最新鲜的行业干货小编点评我们希望邀请更多的生态伙伴共同探讨共同行动2018年4月25日北京站,不见不散!趋势...

推荐文章

热门文章

相关标签