java中json对象有没有方法可以把null值转换成空字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中json对象有没有方法可以把null值转换成空字符串相关的知识,希望对你有一定的参考价值。

1.SerializerFeature.WriteMapNullValue 是否输出值为null的字段,默认为false
也就是说有null时会输出而不是忽略(默认策略是忽略,所以看不到为null的字段)

2.WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null 
注意是字段是字段是字段,而不是json.put("key",null),所以用它时,字段为null的可以转换为空字符串。

3.如果让输出的json中所有为null的字符串都变成空字符串,最简单的做法就是加一个值过滤器,这样就避免了有的字段为null,有的字段为空字符的现象。

参考技术A 1.SerializerFeature.WriteMapNullValue 是否输出值为null的字段,默认为false也就是说有null时会输出而不是忽略(默认策略是忽略,所以看不到为null的字段)
2.WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null 注意是字段是字段是字段,而不是json.put("key",null),所以用它时,字段为null的可以转换为空字符串。
3.如果让输出的json中所有为null的字符串都变成空字符串,最简单的做法就是加一个值过滤器,这样就避免了有的字段为null,有的字段为空字符的现象。本回答被提问者采纳

JAVA中对null进行强制类型转换(null可以强转为任意对象,并执行对象的静态方法)

 

今天很好奇,对null进行强转会不会抛错。做了如下测试得到的结果是,

如果把null强转给对象,是不会抛异常的,本身对象是可以为null的。

但是如果是基本类型,比如 int i = (Integer)obj的强转,其实内部会调用intvalue方法去赋值给基本类型,所以这时候是会报错的。

 

代码如下

 

Object obj = null;
Integer s1 = (Integer)obj;

上面能正常执行,即把null赋值给一个对象或者强行类型转换赋值给对象都是没有问题的。如果s1是 int的基本类型呢?
代码如下,编译时不会报错

 

int s1 = (Integer)obj;
System.out.println(s1);

执行,则报java.lang.NullPointerException错误。
我们反编译后会发现调用了 intValue方法去获取value,所以抛出空指针错误:
Object obj = null;
int s1 = ((Integer)obj).intValue();
System.out.println(s1);
---------------------

 

public class NULL {

private static final String TAG = "NULL";
private void abc(){
System.out.println("123");
}

public static void main(String[] args) {
((NULL)null).abc();
}
}

以上代码运行时会报错:
Exception in thread "main" java.lang.NullPointerException
at com.test.NULL.main(NULL.java:14)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

若将方法abc加上静态修饰符static

public class NULL {
private static final String TAG = "NULL";
private static void abc(){
System.out.println("123");
}

public static void main(String[] args) {
((NULL)null).abc();
}
}

程序正常运行,输出

123
1
null可以被强制类型转换成任意类型的对象,通过这样的方式可以执行对象的静态方法,但如果方法不是静态方法的话,由于null对象并没有被实例化(分配空间),因而运行时会报空指针错误。

 

以上是关于java中json对象有没有方法可以把null值转换成空字符串的主要内容,如果未能解决你的问题,请参考以下文章

关于序列化成JSON是NULL值转成空字符串,要怎么搞

玩转web之json---将表单通过serialize()方法获取的值转成json

java对象 转json 对象参数为null 的参数丢失

[C++]json cpp中将整个Json::Value转成std::string或者把里面值转成string类型

[C++]jsoncpp中将整个Json::Value转成std::string或者把里面值转成string类型

如何把ResultSet转换成Java对象