大佬教程收集整理的这篇文章主要介绍了Jsonlib JsonObject.formObject().toString Integer为null 最后结果是0,String 为null ,最后结果是""(空字符串),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public static void @H_330_4@main(String[] args) {
Person p=new Person();
JSONObject obj = JSONObject.fromObject(p);
System.out.println(obj.toString());
}
运行上面的结果打印:
null
null
{"name":"","age":0}
发现当Integer 类型为null 最后是0,String 为null 最后是“”
我的jsonlib的版本是json-lib:jdk15:2.2.3 下面代码是从JsonObject的1037行开始
private static void SETVALue(JSONObject jsonObject,String key,Object value,Class type,JsonConfig jsonConfig) { Boolean accumulated = false; if(value == null) { value = jsonConfig.findDefaultValueProcessor(typE).getDefaultValue(typE); if(!JsonVerifier.isValidJsonValue(value)) { throw new JSONException("Value is not a valid JSON value. " + value); } }
当我的属性的值是null,就会通过 jsonConfig.findDefaultValueProcessor(typE).getDefaultValue(typE)获取对应的值。findDefaultValueProcessor()方法是
DefaultValueProcessor接口中方法,所以就需要我们自己创建DefaultValueProcessor的实现类修改默认值;
修改之后的代码:
public static void @H_330_4@main(String[] args) { JsonConfig config=new JsonConfig(); config.registerDefaultValueProcessor(Double.class,new DefaultValueProcessor() { @Override public Object getDefaultValue(Class aClass) { return null; } }); config.registerDefaultValueProcessor(Integer.class,new DefaultValueProcessor() { @Override public Object getDefaultValue(Class aClass) { return null; } }); config.registerDefaultValueProcessor(Short.class,new DefaultValueProcessor() { @Override public Object getDefaultValue(Class aClass) { return null; } }); config.registerDefaultValueProcessor(Float.class,new DefaultValueProcessor() { @Override public Object getDefaultValue(Class aClass) { return null; } }); config.registerDefaultValueProcessor(Byte.class,new DefaultValueProcessor() { @Override public Object getDefaultValue(Class aClass) { return null; } }); config.registerDefaultValueProcessor(Long.class,new DefaultValueProcessor() { @Override public Object getDefaultValue(Class aClass) { return null; } }); config.registerDefaultValueProcessor(String.class,new DefaultValueProcessor() { @Override public Object getDefaultValue(Class aClass) { return null; } }); Person p=new Person(); JSONObject obj = JSONObject.fromObject(p,config); System.out.println(p.getName()); System.out.println(p.getAge()); System.out.println(obj.toString()); }
运行结果:
null null {"name":null,"age":null}
OK了
以上是大佬教程为你收集整理的Jsonlib JsonObject.formObject().toString Integer为null 最后结果是0,String 为null ,最后结果是""(空字符串)全部内容,希望文章能够帮你解决Jsonlib JsonObject.formObject().toString Integer为null 最后结果是0,String 为null ,最后结果是""(空字符串)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。