Map与JSONObject对象相互转换记录「建议收藏」

Map与JSONObject对象相互转换记录「建议收藏」业务背景:因为要嵌套一些数据报表,页面点击菜单直接进行url访问,因访问受限要修改url权限,返回数据是JSONObject,防止出现异常,后台进行了一些Map于JSONObject的转换,记录下来配置得json文件格式:{“redashLinks”:[{“name”:”在盈利表”,”url”:”http://i…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

业务背景:因为要嵌套一些数据报表,页面点击菜单直接进行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>

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185708.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PAT A1062

    PAT A1062

    2021年6月29日
    83
  • 关于G1收集器

    关于G1收集器G1(GarbageFirst)收集器是Oracle公司开发的一款主要面向服务端的拥有相对可靠的停顿预测模型的垃圾收集器。在垃圾收集器的历史上有着里程碑式的意义。与之前的收集器不同,G1不在基于固定的新生代与老年代的内存分配方式进行垃圾清理,而是使用了基于Region的内存分配的方式进行垃圾清理。这种方式使得G1在进行垃圾清理的时候不需要对整个新生代或老年代甚至整个Java堆进行垃圾清理,这样就极大的减少标记期间的停顿时间。设计思路:面向局部(单个或多个Region)收集内存布局:基于Regi

    2022年5月20日
    33
  • Hmily 临时笔记「建议收藏」

    Hmily 临时笔记「建议收藏」概述Hmily是一款高性能分布式事务tcc开源框架。基于java语言来开发(JDK1.8),支持Dubbo、SpringCloud、Motan等RPC框架进行分布式事务。功能高可靠性:支持分布式场景下,事务异常回滚,超时异常恢复,防止事务悬挂易用性:提供零侵入性式的Spring-Boot,Spring-Name…

    2022年5月21日
    44
  • 面试又挂了:大厂面试到底更看重学历还是技术?来看看大佬的说法

    面试又挂了:大厂面试到底更看重学历还是技术?来看看大佬的说法前言我是一个普通本科出身的Android程序员,我的学校也不过就是一个普通二本。嗯,我的学弟学妹们也是一样的,都是普通二本。但是和我不同的是,现在的社会越来越浮躁了,浮躁的让人沉不下心认真做事,让人忍不住去想各种有的没的。比如我的这些学弟学妹们。我已经不止一次收到来自他们的私信了,他们问的内容,无一不是表达对自己学历的自卑和对即将离开学校的自己的不自信,还有对面试被拒的伤心。千篇一律的问题,基本内容如下:面试挂了,大厂面试到底更看重学历还是技术?我这样的学历在求职中有什么需要注意点的点吗?

    2022年6月6日
    55
  • python 2022.01.13 激活【2021最新】

    (python 2022.01.13 激活)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/ide…

    2022年3月31日
    40
  • pycharm使用技巧及常用快捷键_2010版excel快捷键大全

    pycharm使用技巧及常用快捷键_2010版excel快捷键大全本文对Pycharm常用快捷键进行了汇总整理,强烈建议你收藏学习,相信这些快捷键一定能提高你Python编程的效率。1.格式化代码【Ctrl+Alt+L】我们写代码的时候会发现…

    2022年8月28日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号