前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >当JSONObject中的value=null时,key竟然会消失?

当JSONObject中的value=null时,key竟然会消失?

作者头像
陈哈哈
发布于 2020-07-03 08:23:45
发布于 2020-07-03 08:23:45
2.9K00
代码可运行
举报
文章被收录于专栏:MySQL入坑记MySQL入坑记
运行总次数:0
代码可运行

我们每天都在用JSON,但JSON中的一些坑你们都知道吗?

比如,

JSON的value值为null时,key会直接没了?

value为Date类型时,JSON.toJSONString打印出来的是时间戳,取出来的却是Date?等。

废话不多说,直接上代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	public static void main(String[] args) {
		demoJSON();
		// demoMap();
	}

	/**
	 *  JSON单元测试接口
	 */
	public static void demoJSON() {
		JSONObject json = new JSONObject();
		json.put("date",new Date());
		json.put("demo","");
		json.put("key",null);
		System.out.println("json.toString:" + json.toJSONString());
		String keyDate = json.get("date") + ""; 
		String demo1 = json.get("demo") + "";
		String key1 = json.get("key") + "";  //这里转成了String
		String key2 = json.getString("key");

		String key1str = key1.toString();  //未报错
		// String key2str = key2.toString(); //报错:java.lang.NullPointerException
		System.out.println("json -- keyDate:" + keyDate);
		System.out.println("json -- key1:" + key1);
		System.out.println("json -- key2:" + key2);
		System.out.println("json -- key1str:" + key1str);
        // System.out.println("json -- key1str:" + key1str);
		System.out.println("");

	}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//打印出来的
json.toString:{"date":1573971907724,"demo":""}
json -- keyDate:Sun Nov 17 14:25:07 CST 2019
json -- key1:null
json -- key2:null
json -- key1str:null

可见,

1.JSONObject的value对以格式date存放的数据,toJSONString时显示为时间戳;

2.如果value为null时,key将直接被取消,get到null值;

所以我们在开发过程中,往JSONObject中赋值时,一定要先判断该值是否为null,及时处理。

断点来看一下:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/11/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
EJB究竟是什么,真的那么神奇吗??
1. 我们不禁要问,什么是”服务集群”?什么是”企业级开发”? 既然说了EJB 是为了”服务集群”和”企业级开发”,那么,总得说说什么是所谓的”服务 集群”和”企业级开发”吧! 这个问题事实上挺关键的,由于J2EE 中并没有说明确,也没有详细的指标或者事例告诉 广大程序猿什么时候用EJB 什么时候不用。于是大家都产生一些联想,觉得EJB”分布式运 算”指得是”负载均衡”提高系统的执行效率。然而,预计非常多人都搞错了,这个”服务群集” 和”分布式运算”并没有根本解决执行负载的问题,尤其是针对数据库的应用系统。 为什么? 我们先把EJB 打回原形给大家来慢慢分析。
全栈程序员站长
2022/07/14
1K0
EJB究竟是什么,真的那么神奇吗??
JavaEE完整框架[通俗易懂]
JavaEE平台提供了一个基于组件的方法来加快设计、开发、装配及部署企业应用程序。
全栈程序员站长
2022/09/08
2.3K0
经典笔试篇-EJB及Spring篇
162、EJB 与JAVA BEAN 的区别?【基础】 答:Java Bean 是可复用的组件,对Java Bean 并没有严格的规范,理论上讲,任何一个Java 类都可以是一个Bean。但通常情况下,由于Java Bean 是被容器所创建(如Tomcat)的,所以Java Bean 应具有一个无参的构造器,另外,通常Java Bean 还要实现Serializable 接口用于实现Bean 的持久性。Java Bean实际上相当于微软COM 模型中的本地进程内COM 组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java 的远程方法调用(RMI)技术的,所以EJB 可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic 这样的容器中,EJB 客户从不直接访问真正的EJB 组件,而是通过其容器访问。EJB 容器是EJB 组件的代理,EJB 组件由容器所创建和管理。客户通过容器来访问真正的EJB 组件。
cwl_java
2020/02/18
1.4K0
EJB的简单介绍和使用[通俗易懂]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说EJB的简单介绍和使用[通俗易懂],希望能够帮助大家进步!!!
Java架构师必看
2022/09/12
4.6K0
EJB的简单介绍和使用[通俗易懂]
tomcat weblogic 对比
J2ee开发主要是浏览器和服务器进行交互的一种结构.逻辑都是在后台进行处理,然后再把结果传输回给浏览器。可以看出服务器在这种架构是非常重要的。   这几天接触到两种Java的web服务器,做项目用的Tomcat,看视频看的是WebLogic Server(WLS),都是web服务器,有什么区别和联系呢?   (一)先简单介绍一下这两种服务器。   WebLogic是美国bea公司出品的一个application server,确切的说是一个基于Javaee架构的中间件,纯java开发的,最新版本WebLogic Server 9.0是迄今为止发布的最卓越的BEA应用服务器。BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。完全遵循J2EE 1.4规范。 Tomcat服务器是一个免费的开源的Web 应用服务器,是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且很重要的是她免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。而且由于开源,它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。   (二)相同点:   WebLogic和Tomcat都是基于java的基础架构来满足实时处理需求,不同的版本与jdk版本兼容和有所不同;因为都是要和前台交互,所以他们都基于sun公司的servlet来实现的。   (三)不同点:   功能性:   WebLogic更加强大。weblogic是j2ee的应用服务器(application server),包括ejb ,jsp,servlet,jms等等,全能型的。是商业软件里排名第一的容器(JSP、servlet、EJB等),并提供其他如JAVA编辑等工具,是一个综合的开发及运行环境。   WebLogic应该是J2EE Container(Web Container + EJB Container + XXX规范)!   Tomcat只能算Web Container,是官方指定的JSP&Servlet容器。只实现了JSP/Servlet的相关规范,不支持EJB(硬伤啊)!不过Tomcat配合jboss和apache可以实现j2ee应用服务器功能   一般来说考虑stucts等架构tomcat就可以了,但如果考虑EJB的话,WebLogic是比较好的选择。   扩展性:   用WebLogic运行标准的java可能并不是最好的方式,WebLogic里支持他自己的一些东西,这些东西虽然是在纯java基础上开发的,但其他工具里都没有。WebLogic Server凭借其出色的群集技术,拥有处理关键Web应用系统问题所需的性能、可扩展性和高可用性。   WebLogic Server既实现了网页群集,也实现了EJB组件 群集,而且不需要任何专门的硬件或操作系统支持。网页群集可以实现透明的复制、负载平衡以及表示内容容错 。 无论是网页群集,还是组件群集,对于电子商务解决方案所要求的可扩展性和可用性都是至关重要的。共享的客户机/服务器和数据库连接以及数据缓存和EJB都增强了性能表现。这是其它Web应用系统所不具备的 所以,在扩展性方面WebLogic是远远超越了Tomcat。   费用上:   Tomcat开源免费。   WebLogic不开源不免费。   总之,在功能强大和扩展性和可用性等方面WLS比Tomcat好很多,但这也不能说明WLS适合每一方面,从Tomcat的使用流行度便可以看出,Tomcat虽功能有限,但也很受欢迎。其实关键看你要做什么。Tomcat 是免费开源的jsp,servlet引擎,入门级别的Web服务器,刚入门的IT人使用Tomcat简单易上手。而且它一个轻量级应用服务器,最重要的是它免费,所以在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。Tomcat比较轻巧,消耗资源较少。当然,项目大的时候,WLS肯定再合适不过,而且Tomcat也无法满足太多需求,但是,WLS的费用也是不可小觑的。   总之,关键看你做什么,权衡利弊做选择。   此外,还有其他J2EE Application Server,例如: IBM的websphere、Sun的Glassfish、resin等。Apache全球应用最广泛的http服务器,免费。同样开源免费的JBoss
MickyInvQ
2020/09/27
2.9K0
tomcat weblogic 对比
认识EJB_ej是什么的缩写
将业务逻辑从客户端软件中抽取出来,封装在一个组件中。这个组件运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实现业务逻辑,而客户端软件的功能单纯到只负责发送调用请求和显示处理结果。在J2EE中,这个运行在一个独立的服务器上,并封装了业务逻辑的组件就是EJB(Enterprise JavaBean)组件。
全栈程序员站长
2022/11/17
8700
认识EJB_ej是什么的缩写
J2EE规范总结
  概述 J2ee是我们步入java学习的一个開始。它将开启这趟奇幻之旅,Java是一种简单的,跨平台的,面向对象的,分布式的。解释的。健壮的安全的。结构的中立的,可移植的。性能非常优异的多线程的,
Kevin_Zhang
2018/07/05
3.3K0
j2EE是什么_j2ee体系结构
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/07
2.7K0
j2EE是什么_j2ee体系结构
分布式通信的几种基本方式RPC、RMI、JMS、EJB、WebService
先介绍分布式通信的几种基本方式。 RPC 远程过程调用协议(Remote Procedure Call Protocol, RPC)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发分布式应用更加容易。RPC采用C/S架构。请求程序就是一个Client,而服务提供程序就是一个Server。首先,Client调用进程发送一个有进程参数的调用信息到
Albert陈凯
2018/04/04
1.8K0
Java面试手册:J2EE
1、B/S与C/S的联系与区别。 C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、InFORMix或 SQL Server。客户端需要安装专用的客户端软件。 B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、InFORMix或 SQL Server等数据库。在这种结
南风
2018/12/25
1.2K0
Web服务器端技术(一)
在最近半个世纪里,计算机软件的作用发生了很大的变化。硬件性能的极大提高、计算机结构的巨大变化、存储容量的大幅度增加以及种类繁多的输入、输出方法都促使基于计算机的系统更加先进和复杂。Web应用属于计算机软件的子集,在此期间也在快速的发展中。从早期的企业黄页,到现在的各种移动端应用、云服务,都离不开Web技术的不断迭代升级。从架构层面上看,早期的应用大部分是C/S结构的,C/S结构系统大多分为两层,客户端实现用户展示和部分逻辑,服务端实现数据存储和部分逻辑。到了面向对象出现的时候,应用开始转向三层结构即表现层展示用户界面,领域层实现业务逻辑,数据层存取数据。这样的分层使不同层级的开发人员可以专注于各自部分的技术,通过服务接口调用彼此合作。上个世纪90年代Web的出现,应用结构开始从C/S结构转变成B/S结构,Web应用的兴起,也让Web技术得到了巨大的发展。Web技术的发展很多也是遵循着分层思想,分层使层与层之间实现了解耦和复用,慢慢的层级之间结构化越来越清晰,实现了层级的标准化。下面我们沿着Web的发展阶段,分析一下一些主要的Web技术。
搬砖俱乐部
2019/06/15
4K0
分布式计算第四章 RMI
RPC (Remote Procedure Call):远程方法调用,用于一个进程调用另一个进程中的过程,从而提供了过程的分布能力。
张哥编程
2024/12/19
1320
分布式计算第四章 RMI
RMI与RPC的区别
一、RMI 远程方法调用 RMI(Remote Method Invocation)远程方法调用。能够让在客户端Java虚拟机上的对象像调用本地对象一样调用服务端java 虚拟机中的对象上的方法。使用
黑泽君
2018/10/11
18.1K0
RMI与RPC的区别
什么是JavaBean、bean? 什么是POJO、PO、DTO、VO、BO ? 什么是EJB、EntityBean?
在Java开发中经常遇到这些概念问题,有的可能理解混淆,有的可能理解不到位,特此花了很多时间理顺了这些概念。不过有些概念实际开发中并没有使用到,可能理解还不够准确,只能靠后续不断纠正了。
全栈程序员站长
2022/09/01
4K0
分布式通信的几种方式
目前的分布式架构主要由corba和JavaEE搭建,JavaEE优点是跨平台,开发成本低、周期短,不需要学习IDL语言;CORBA的优点是服务器响应速度更快。决定这些架构优缺点的,主要就是通信方式。
哲洛不闹
2018/09/14
4.7K0
分布式通信的几种方式
浅析远程对象调用
作者:韩伟,个人公众号:韩大(ID:handa1740168), 以技术提升开发效率。 远程对象调用的概念 要说“远程对象”,必先说“远程调用”,也就是RPC。比较著名的RPC框架有,最近很火的gR
韩伟
2017/06/19
2K0
浅析远程对象调用
如何设计一个 RPC 系统
RPC是一种方便的网络通信编程模型,由于和编程语言的高度结合,大大减少了处理网络数据的复杂度,让代码可读性也有可观的提高。但是RPC本身的构成却比较复杂,由于受到编程语言、网络模型、使用习惯的约束,有大量的妥协和取舍之处。本文就是通过分析几种流行的RPC实现案例,提供大家在设计RPC系统时的参考。 由于RPC底层的网络开发一般和具体使用环境有关,而编程实现手段也非常多样化,但不影响使用者,因此本文基本涉及如何实现一个RPC系统。 认识 RPC (远程调用) 我们在各种操作系统、编程语言生态圈中,多少都会接
用户1263954
2018/06/22
7340
如何设计一个 RPC 系统
RPC是一种方便的网络通信编程模型,由于和编程语言的高度结合,大大减少了处理网络数据的复杂度,让代码可读性也有可观的提高。但是RPC本身的构成却比较复杂,由于受到编程语言、网络模型、使用习惯的约束,有
韩伟
2016/10/18
13.6K4
如何设计一个 RPC 系统
远程方法调用(RMI)原理与示例 转
  远程方法调用(RMI)顾名思义是一台机器上的程序调用另一台机器上的方法。这样可以大致知道RMI是用来干什么的,但是这种理解还不太确切。RMI是Java支撑分布式系统的基石,例如著名的EJB组件。
wuweixiang
2018/08/14
1.1K0
远程方法调用(RMI)原理与示例
                                                                            转
J2EE全面介绍
    目前,Java 2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,J2ME)、适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Edition,J2SE)、适用于创建服务器应用程序和服务的Java 2平台企业版(Java 2 Platform Enterprise Edition,J2EE)。
深蓝studyzy
2022/06/14
1.2K0
相关推荐
EJB究竟是什么,真的那么神奇吗??
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档