字符串(类似这种有null值的“{“xx”:”xxx”,”aa”:null}”)转换成JSONObject不会出现问题,但是value属性为null的JSONObject或者Object转换成字符串时,对应value=null的key会消失;
当字符串是 "{xxxx…“xxxx”:{xxxxxx…“xx”:null,xxxxx…},xxxxx…}“这样的情况转换成”[“xxx:xxx”,“xxx:xxxxx”,“xxxxx”…]"这种情况时,最外层字符串转换成JSONObject格式没问题,但里层的{}包裹的对象转换JSONObject会出问题,value为null的key会消失。
这时可以用反射,当然要准备好一个对应{}内部对象的实体类,封装一下,然后通过反射得到全部的字段名,在循环挨个把字段名当做key,通过key找到value,赋值到自己建的List集合中,结束。
这里Object转换成string,用String.valueOf(),有些key会消失。
这是弃用的写的,因为得到的key得不全!
最后找到一个方法添加SerializerFeature.WriteMapNullValue后可以保留value为null的数据JSONObject.toJSONString(object,SerializerFeature.WriteMapNullValue)