`
borglee
  • 浏览: 134467 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JSON与null的解惑

    博客分类:
  • Java
阅读更多

从做程序到现在,用JSON也用了好些年了。突然发现JSON在put空值时有时会有key而有时又不会有。为了解除这个疑惑我做了以下测试。 我用的包是:json-lib-2.4-jdk15.jar

 

例一:

public static void main(String[] args) {
        JSONObject json = new JSONObject();
        json.put("key", null);
        System.out.println(json);
}

 可以看到,控制输出:{}

由此可见,如果put一个空指针(null)给JSON,JSON会自动屏蔽此key不会有任何处理。

 

我们再来看看另外一个例子。

 

例二:

 public static void main(String[] args) {
        JSONObject json = new JSONObject();
        String value = "null";
        json.put("key", value);
        System.out.println(json);
 }

 控制台输出:{"key":null}

 

在例二中,我们将String类型的字符串value的值设置为“null”。此时JSON会带有key及value存在。大家请注意看value为null。并不是“null”不带引号。我猜测应该是JSON自动将字符串“null”转换为可识别的空值。如果我们将value的值设置为非“null”的任何字符,JSON都会带有引号。

 

 

综上所述:如果需要在value为空时不显示key,则可以直接传递null。但是如果需要不管在value是否为空时都带有key则需要手动将null转换为“null”字符串即可。

 

才疏学浅,有什么不正之处。希望高手赐教!

分享到:
评论
2 楼 马磊_MaLeo 2016-11-30  
楼主,你这个是不严谨的。这不就是三元表达式的做法嘛
1 楼 xxk20 2016-05-24  
楼主这个输出测试有一个地方不是很正确,json在put的时候其实并没有做null转换,json的put其实看源码就知道就是一个map的put功能,而真正做转换是在System.out的时候,方法内部的toString函数做的转换,也就是json.toString()函数起的作用。

相关推荐

    PHP 获取JSON json_decode返回NULL解决办法

    PHP 获取JSON json_decode返回NULL解决办法,不小心在返回的json字符串中返回了BOM头的不可见字符,某些编辑器默认会加上BOM头,这样处理才能正确解析json数据

    springboot后台接收axios传递的json数据为null

    后台接收到的数据一直显示null 原因: 使用@RequestBody标签接收json数据,参数类型不能用Sting 看这两个注解的作用 @RequestParam 是作用在形参列表上,RequestParam可以接受简单类型的属性,也可以接受对象类型。...

    spring mvc拦截器过滤json中的null值

    在Spring MVC框架中,我们经常需要处理JSON数据,这些数据可能包含null值。在某些情况下,为了保持数据的整洁和避免后端处理null值时出现异常,我们需要在数据传输前过滤掉这些null值。本教程将详细介绍如何使用...

    Json_decode 解析json字符串为NULL的解决方法(必看)

    总结来说,`json_decode()`解析JSON字符串返回NULL的问题往往与编码格式有关。在接收到JSON数据后,首先使用`html_entity_decode()`函数对HTML实体进行转换,然后用`stripslashes()`去除不必要的转义字符。通过这两...

    C#中 Json 序列化去掉null值的方法

    C#中 Json 序列化去掉 null 值的方法 在 C# 中, Json 序列化是一种常用的数据交换格式,但是在实际应用中,我们经常会遇到对象的某些属性为 null 的情况,这时候我们需要将这些 null 值去掉,下面我们就来讨论如何...

    lua-cjson decode中null改成nil

    这可能是为了保持与JSON数据源的一致性,或者有特定的需求来区分`nil`和`null`。 要实现这个功能,你需要对lua-cjson库的源代码做一些小的修改。通常,这种修改会在解码函数内部进行,当遇到JSON的`null`关键字时,...

    fastjson生成json时Null属性不显示的解决方法

    然而,默认情况下,当Java对象中的某个属性值为`null`时,Fastjson在生成JSON字符串时会忽略这个属性,这可能会导致丢失关键信息。在某些场景下,我们希望`null`值仍然能在JSON中体现,以便接收方能够清楚地了解哪些...

    json与对象相互转换系列处理

    - 在序列化时,需要注意处理null值,因为JSON不包含null,通常会转换为空字符串或undefined。 - 在处理日期时,不同语言可能有不同的处理方式,需要特别注意。 - 安全性问题:在处理用户输入的JSON时,应确保进行...

    SpringBoot项目中处理返回json的null值(springboot项目为例)

    本文以spring boot项目为例给大家介绍SpringBoot项目中处理返回json的null值问题,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下

    JSON net.sf.json jar包

    1. **JSON与Java对象的互转**:这个库提供了便捷的方法将Java对象(如Java Bean、Map、List等)转换为JSON格式的字符串,同时也支持将JSON字符串解析成相应的Java对象。这在处理前后端交互或者内部数据存储时非常...

    详解Java去除json数据中的null空值问题

    在Java开发中,处理JSON数据时经常会遇到含有`null`值的情况。这些`null`值在某些场景下可能不希望出现在最终的JSON串中,因为它们可能会占用不必要的空间或者影响到接收端的解析。本篇文章将详细介绍如何在Java中...

    spring boot 下对JSON返回值去除null和空字段操作

    当JSON对象中包含`null`值或空字段时,这不仅增加了不必要的网络传输负担,也可能对客户端解析造成困扰。本篇将详细介绍如何在Spring Boot中去除JSON返回值中的`null`和空字段。 首先,Spring Boot默认使用的JSON库...

    用于java对象与json对象间的相互转换(net.sf.json.JSONObject)

    是开源库Apache Commons的一个组件,提供了Java对象与JSON对象之间的转换功能。下面将详细阐述如何使用`JSONObject`进行JSON操作。 ### 1. 解析JSON字符串 当你从服务器获取或从文件读取到一个JSON字符串时,可以...

    NewtonJson_NewtonJson_JSON_json解析_presentd78_

    标题中的"NewtonJson_NewtonJson_JSON_json解析_presentd78_"可能指的是使用Newtonsoft.Json库进行JSON解析的演示或教程。 在.NET环境中,Newtonsoft.Json.dll是该库的主要组件,它包含了一系列类和方法,使得...

    ZUI2_JSON2_/UI2/CL_JSON_ui2/cl_json_abap_Ui2_cl_json_zui2_json_源

    标题中的"ZUI2_JSON2_/UI2/CL_JSON_ui2/cl_json_abap_Ui2_cl_json_zui2_json_源"可能指的是一个与ZUI2相关的项目,它利用了ABAP类/UI2/CL_JSON来解析和生成JSON数据。描述中提到,我们需要用到这个类来将JSON格式的...

    json转换jsonschema

    1. **类型(Type)**:JSON Schema定义了数据应遵循的类型,如字符串(string)、数字(number)、对象(object)、数组(array)、布尔值(boolean)和null。 2. **属性(Properties)**:在对象类型中,可以定义...

    net.sf.json.JSONObject 为null 的判断方法

    当尝试从一个无效的JSON字符串(如"123")创建一个`JSONObject`时,`JSONObject.fromObject()`方法并不会返回`null`,而是返回一个非空的`JSONObject`。因此,上述代码中的`if`条件永远不会满足,即使JSON对象实际上...

    json.zip_C++_JSON_json 类_json 结构体

    首先,JSON数据格式通常以键值对的形式存在,其结构包括对象(大括号{}包围的一组键值对)、数组(方括号[]包围的一组值)以及基本数据类型(如字符串、数字、布尔值和null)。在C++中,为了操作JSON,我们需要一个...

    JSON_Trans.rar_LABVIEW转换JSON_json Labview_labivew json_labview j

    它主要由键值对(key-value pairs)组成,键用引号包围,值可以是字符串、数字、布尔值、数组、null或其他JSON对象。 2. **LabVIEW中的JSON支持**:从LabVIEW 2013版本开始,内置了对JSON的支持。提供了JSON解析器...

    java json不生成null或者空字符串属性(详解)

    总结来说,生成不包含null或空字符串属性的JSON字符串是一个在数据交换与存储优化方面十分重要的实践。通过合理使用Gson库的自定义序列化选项,可以有效地提升数据处理的效率和性能,确保系统的高效运作。开发者应当...

Global site tag (gtag.js) - Google Analytics