JSON与null的解惑
来源:互联网 发布:软件beta版已过期 编辑:程序博客网 时间:2024/05/19 20:22
从做程序到现在,用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”字符串即可。
JSONObject 判断字符串null还是null值
目前发现有两种包.两种不一样的json包.
第一种情况是: json包是json-lib包是net.sf.json
研究源码发现.JSONObject里有一段代码是当遇到json串中是null的时候.返回JSONNUll.
所以区分null时这样:
JSONObject jo = JSONObject.fromObject("{a:null,b:\"null\"}");
Object o = jo.get("a");
if(o instanceof JSONNull){
System.out.println("Is empty null");
}else{
System.out.println("is String null");
}
o = jo.get("b");
if(o instanceof JSONNull){
System.out.println("Is empty null");
}else{
System.out.println("is String null");
}
输入的结果为第二种情况是: org.json的包
JSONObject jo = new JSONObject(("{\"a\":\"null\",\"b\":null}"));
if(jo.get("a") instanceof String){
System.out.println("a is String null");
}else{
System.out.println("a is empty null");
}
if(jo.get("b") instanceof String){
System.out.println("a is String null");
}else{
System.out.println("a is empty null");
}
System.out.println(jo.get("b").getClass());
这时候发现.返回的null是JSONObject.NUll
两种包不一样的返回NUll值
0 0
- JSON与null的解惑
- json里的null与"null"
- JSON串中的null与"null"
- 为您解惑:JavaScript-undefined与null区别..........
- strtok的疑问与解惑
- json判断null的方法
- json中null的处理
- json中头疼的null
- JSON对null的处理
- JSON使用DefaultValueHandling与NullValueHandling 不序列化属性的默认值与null
- json null
- 【解惑】学编程的怪圈与通病
- 面试解惑-排列与组合的实现
- 【解惑】类与对象的初始化问题
- 与电容有关的几点解惑
- null与""的区别
- null 与 "" 的区别
- null 与 "" 的区别
- Spring mybatis无法注入问题解决一例
- LeetCode- Evaluate Reverse Polish Notation
- PAT (Advanced Level) Practise 1063 Set Similarity (25)
- iOS设置navigationBar背景透明
- WIN64上一种只需修改函数6个字节的INLINE HOOK方法
- JSON与null的解惑
- C++: 模拟实现类bitset
- Understanding LSTM Networks
- 搜索引擎原理 – 正排索引、倒排索引以及齐普夫法则
- ios学习资料
- php常用的的全局变量
- Bootstrap 提示框
- DRM security
- PerformanceCounter 性能计数器的使用