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>

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 电赛练习之旋转倒立摆PID调节[通俗易懂]

    电赛练习之旋转倒立摆PID调节[通俗易懂]前言:在家准备电赛控制题,第一个选择的旋转倒立摆,结构和电路相对简单,对于新手比较友好。本人今年大二,自学的STM32和PID算法,本文算是对这个题目练习的记录吧,文章和程序有误的地方还请大家多多指教。一、机械结构考虑到正式比赛时需要自己搭建机械结构,我就没有直接购买现成的机械结构。关于机械结构还是平时接触太少了,随便在淘宝上买的不锈钢打孔支架作摆臂和旋转臂,最后发现传感器没法安放,强行用电机支架和胶带固定住。最困难的是怎么把电机和旋转臂连接得牢靠,最开始用的一个联轴器,发现转的猛了就会松动,想尽各种办

  • Java文件读写操作

    Java文件读写操作Java中I/O流对文件的读写有很多种方法,在这里我主要介绍三种方式,供大家参考。第一种方式:使用FileWriter和FileReader,对文件内容按字符读取,代码如下Stringdir="E:\\soft\\aaa\\a.txt";Filefile=newFile(dir);//如果文件不存在,创建文件if(!file.exists())file.c…

  • ubuntu20更换国内源_ubuntu更换国内源

    ubuntu20更换国内源_ubuntu更换国内源[Fedora-ftp.sjtu.edu.cn]name=Fedora12-i386baseurl=http://ftp.sjtu.edu.cn/fedora/linux/releases/12/Fedora/i386/os/enabled=1gpgcheck=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora[Eve

  • IntelliJ IDEA安装与JDK 环境变量配置

    IntelliJ IDEA安装与JDK 环境变量配置IntelliJIDEA是支持JAVA开发得一种IDE安装它需要下载后逐步安装,没什么难点,但是最后会需要一个注册码,网上找个几个都提示过期了。但是从http://idea.lanyus.com/可以在线生成但是它提示注册码无效可以但是试过之后仍然不行,所以我去掉这两句话就可以了。然后需要安装JDK和配置环境变量一.下载JDK1.去jdk官网地址:http:…

  • txt文本格式怎么转换成excel_文本格式转换为日期

    txt文本格式怎么转换成excel_文本格式转换为日期将txt文本转换为excel格式,中间使用的列分割为tab键==一、使用xlwt模块注:Excel2003一个工作表行数限制65536,列数限制256需要模块:xlwt模块安装:xl

  • 前女友婚礼,python破解婚礼现场的WIFI,把名称改成了[通俗易懂]

    前女友婚礼,python破解婚礼现场的WIFI,把名称改成了[通俗易懂]python小哥哥,参加前女友婚礼,破解了婚礼现场的WIFI,还把WiFi的名称给改成了。。。

发表回复

您的电子邮箱地址不会被公开。

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