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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Matlab GUI界面设计

    Matlab GUI界面设计摘要:本篇博文基于MATLAB2014a进行GUI设计。

    2022年4月27日
    43
  • Pytest(1)安装与入门[通俗易懂]

    Pytest(1)安装与入门[通俗易懂]pytest介绍pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它

    2022年7月29日
    2
  • 数据库设计工具之chiner

    数据库设计工具之chiner一、概要之前我们在项目开发阶段设计数据库可能常用PowerDesigner,PowerDesigner是业内主流的数据库建模工具,但随着技术和时间的推移,PowerDesigner越来越暴露出一些问题,比如安装麻烦,功能较多复杂,界面有点古老等。powerDesigner16.5软件下载提取码:7xmd随后一款国内软件的成熟越来越受更多开发人员喜爱,软件名称为CHINER:CHINESEEntityRelation(国产实体关系图工具),,中文名称为:元数建模,目前最新版本为3.0版本。

    2022年7月11日
    68
  • IDEA常用快捷键总结

    IDEA常用快捷键总结IDEA常用快捷键总结1.根据psvm或者main快速生成主函数我们可以在类中输入psvm或者main然后IDEA会自动提示main(),敲击回车即可自动生成~2.根据sout快速生成打印语句我们可以在方法中输入sout然后IDEA会自动提示打印语句,敲击回车即可自动生成~3.查找的快捷键按Ctrl+F表示在当前页面中查找4.万能键Alt+EnterAlt+Enter是一个特别常用且好用的“万能键”比如我们可以在类中导入需要导的包再比如我们可以在类中快

    2022年5月14日
    37
  • 5G物理信道和物理信号定义

    5G物理信道和物理信号定义一、上行链路物理信道包含以下信道:1、物理上行链路共享信道PUSCH2、物理上行控制共享信道PUCCH3、物理随机接入信道PRACH其中PUSCH支持的调制方案有:pai/2-BPSKQPSK16QAM64QAM256QAM物理上行链路控制信道支持多种格式:fomat0OFDM符号长度1-2fomat1OFDM符号长度4-14fomat2OFDM符号…

    2022年5月12日
    48
  • War3Share开源

    War3Share开源由于个人精力和网络带宽等问题,我无法继续进行魔兽争霸3录像工具软件War3Share的开发与维护。为了让它得到更好的发展,现已转交给超级玩家进行管理。经过协商,我们决定将它以LGPL协议进行开源。Wa

    2022年7月4日
    30

发表回复

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

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