昨天改了优化了一下代码添加了一下缓存:

String userJSONString = JSONObject.toJSONString(redisService.get(redisKey))。

xxxEntity = JSON.parseObject(userJSONString, XXXEntity.class);//结果对象序列话后 为空,其原因就是在  SONObject.toJSONString 是将NULL 直接变成了字符串“null”

我们来看一下它的底层是如何实现的

    public static String toJSONString(Object object) {                                                         
        JSONWriter.Context context = createWriteContext(SerializeConfig.global, DEFAULT_GENERATE_FEATURE);     
        try (JSONWriter writer = JSONWriter.of(context)) {  
            //当我们对象为空的时候,它会将我们对象为 null 转化为 字符串“null”                                                   
            if (object == null) {                                                                              
                writer.writeNull();  //关键在这                                                                          
            } else {                                                                                           
                writer.setRootObject(object);                                                                  
                Class<?> valueClass = object.getClass();                                                       
                ObjectWriter objectWriter = context.getObjectWriter(valueClass, valueClass);                   
                objectWriter.write(writer, object, null, null, 0);                                             
            }                                                                                                  
                                                                                                               
            return writer.toString();                                                                          
        } catch (com.alibaba.fastjson2.JSONException ex) {                                                     
            Throwable cause = ex.getCause() != null ? ex.getCause() : ex;                                      
            throw new JSONException(ex.getMessage(), cause);                                                   
        } catch (RuntimeException ex) {                                                                        
            throw new JSONException("toJSONString error", ex);                                                 
        }                                                                                                      
    }                                                                                                          
                                                                                                               

我们再看看:writeNull()

    public void writeNull() {
        writeRaw("null");
    }

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐