Object类通过转为JsonObject或Map获取属性值「建议收藏」

Object类通过转为JsonObject或Map获取属性值「建议收藏」Object类通过转为JsonObject或Map获取属性值简介:在项目使用中,我们经常会遇到object类,如何快速的获取其属性值?在此,不通过反射机制获取,而是将其转为JsonObject类或者Map,获取其对应属性名的属性值。Object类//object使用情景一:Objecto=redisTemplate.opsForHash().get(vehicleMessage,engineCode);//object使用情景二:Objectob=json.get

大家好,又见面了,我是你们的朋友全栈君。

Object类通过转为JsonObject或Map获取属性值

  • 简介:

在项目使用中,我们经常会遇到object类,如何快速的获取其属性值?在此,不通过反射机制获取,而是将其转为JsonObject类或者Map,获取其对应属性名的属性值。

  • Object类

//object使用情景一:
//object类值形式为:{“name”:“value”,“name1”:“value1”},json格式
Object o = redisTemplate.opsForHash().get(vehicleMessage, engineCode);
object o 内容
//object使用情景二:
//object类值形式为:{name=value,name1=value1},map格式
Object o = json.get(“MDT_EN_DA_GB6_TYPE”);
object ob 内容

  • Object类->JsonObject类
// 导入maven依赖,此处使用fastjson
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.58</version>
</dependency>
/** 情景一:o.toString()={"timestamp": 1592980664000,"type": 3,"isSuccess": true} 情景二:o.toString()={MDT_EN_GB6_AIR_PRESS=99.5, MDT_EN_GB6_REAGENT_ALLOWANCE=98, MDT_EN_GB6_SCR_NOX_DOWN=65535 ...省略} */
//方法一:
//适用于情景一,适用于json格式的object类,parseObject()方法用于json字符串:
//情景二使用会报错:com.alibaba.fastjson.JSONException: expect ':' at 0, actual =,toString()方法生成的不是json格式报错。
JSONObject jsonObject = JSONObject.parseObject(o.toString());

//方法二:强转
//适用于情景一,只适用于json格式的object类:
JSONObject jsonObject = (JSONObject)o;
//适用于情景二,map格式、Collection格式等等,toJSON()方法将object类转换成JSON格式的object类:
JSONObject jsonObject = (JSONObject) JSON.toJSON(o);

//通过jsonObject对象,就可以很方便的获取属性值
Object tp = jsonObject.get("type");
String type = jsonObject.getString("type");
  • Object类->Map集合
//适用于情景二,只适用于map格式的object类:
Object o = map.get("MDT_EN_DA_GB6_TYPE");
Map entry = (Map)o;
Object down = entry.get("MDT_EN_GB6_SCR_NOX_DOWN");

Complete!!!
当然Object类->JsonObject类,还有Jackson、Gson以及官方JSON,可以多多尝试。
如果使用JSONObject.fromObject()这个方法转换对象,
必须引用的包为net.sf.json.JSONObject,这个包引用依赖较多,在此贴一下。

<dependency>
	<groupId>commons-beanutils</groupId>
	<artifactId>commons-beanutils</artifactId>
	<version>1.9.3</version>
</dependency>
<dependency>
	<groupId>commons-collections</groupId>
	<artifactId>commons-collections</artifactId>
	<version>3.2.1</version>
</dependency>
<dependency>
	<groupId>commons-lang</groupId>
	<artifactId>commons-lang</artifactId>
	<version>2.6</version>
</dependency>
<dependency>
	<groupId>commons-logging</groupId>
	<artifactId>commons-logging</artifactId>
	<version>1.1.1</version>
</dependency>
<dependency>
	<groupId>net.sf.ezmorph</groupId>
	<artifactId>ezmorph</artifactId>
	<version>1.0.6</version>
</dependency>
<dependency>
	<groupId>net.sf.json-lib</groupId>
	<artifactId>json-lib</artifactId>
	<version>2.2.3</version>
	<classifier>jdk15</classifier><!-- jdk版本 -->
</dependency>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • 5500xt挖矿算力_rx470d etc算力

    5500xt挖矿算力_rx470d etc算力…每日平均收益为R$4。RX5700XT表现出色的其他加密货币包括:以太坊经典(ETC),拉文币(RVN),天堂协议XHV和Beam(BEAM)。可以用于采矿的同一系列图形卡中的其他型号是RX5700,RX5600XT和RX5500XT。但是,与RX5700XT相比,这些其他型号的利润率较低。NvidiaRTX2060超级频率:1470MHz至1670MHzV…

    2022年6月14日
    84
  • java servlet容器有哪些_servlet容器是什么

    java servlet容器有哪些_servlet容器是什么Servlet 容器是一个程序 它是与 servlet 交互的 Web 服务器的一部分 它可以从 web 页面接收请求后再将这些请求重定向到 Servlet 对象中 然后将动态生成的结果返回到正确的位置中 在 Java 中 Servlet 容器用于生成动态网页 因此 servlet 容器是与 javaservlet 交互的 Web 服务器的基本部分 接下来将在文章中为大家详细介绍 Servlet 容器是什么 希望对大家有所帮助 推荐

    2025年8月23日
    4
  • oracle 入门_钢琴零基础入门教程

    oracle 入门_钢琴零基础入门教程本章内容:ØOracle介绍Ø安装步骤Ø基本使用Ø用户管理

    2022年8月31日
    4
  • 关于Json 与 Request Header 的Content-Type 一些关系。

    关于Json 与 Request Header 的Content-Type 一些关系。由于最近遇到关于ashx文件ajax解析参数的问题。查询网上很多资料后,已经解决。鉴于网上已经足够多的,关于这个问题的文章。大部分内容来自互联网,我这里只是做一些整理和记录。特此说明并非原创。Content-Type是返回消息中非常重要的内容,表示后面的文档属于什么MIME类型。Content-Type:[type]/[subtype];parameter。例如最常见的就是text/htm…

    2022年8月24日
    7
  • pytest skipif_pytest断言方法

    pytest skipif_pytest断言方法前言pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能Skip和xfail:处理那些不会成功的测试用例你可以对那些在某些特定平台上不能运行的测试用

    2022年7月29日
    8
  • 树莓派4b OpenWrt做旁路由

    树莓派4b OpenWrt做旁路由主要分为以下几步:一、下载并刷入OpenWrt固件OpenWrt固件用的是Lean大的最新编译好的固件,按照正常的步骤在GitHub上下载并将二、进入路由器后台修改静态IP及相应的防火墙设置三、连接树莓派的wifi,并手动设置IP…

    2022年5月12日
    54

发表回复

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

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