关于使用fastjson序列化过程中遇到的问题

1.将list转jsonString过程中,属性为null会导致对应key丢失,但是可以设置SerializerFeature.WriteMapNullValue解决

JSON.toJSONString(list, SerializerFeature.WriteMapNullValue) 

2.使用JSON.parseArray(),属性为null会导致对应key丢失,即使使用JSON.toJSONString(list, SerializerFeature.WriteMapNullValue) 得到对应拥有对应key的json字符串,最后转成jsonArray还是会对视value为null的key

测试代码

    @Test
   void JsonArrayTest(){
       PlusProject plusProject = new PlusProject();
       plusProject.setName("hello");
       plusProject.setUid(null);
       List<PlusProject> plusProjects = new ArrayList<>();
       plusProjects.add(plusProject);
       System.out.println("plusProjects = " + plusProjects);
       String jsonString = JSON.toJSONString(plusProjects, SerializerFeature.WriteMapNullValue);
       System.out.println("jsonString = " + jsonString);
       JSONArray jsonArray = JSON.parseArray(jsonString);
       System.out.println("jsonArray = " + jsonArray);
  }

控制台输出:

plusProjects = [PlusProject(uid=null, name=hello, startdate=null, finishdate=null, lastsaved=null, calendaruid=null, calendars=null, version=null, state=null)]
jsonString = [{"calendars":null,"calendaruid":null,"finishdate":null,"lastsaved":null,"name":"hello","startdate":null,"state":null,"uid":null,"version":null}]
jsonArray = [{"name":"hello"}]

最后解决办法:

使用Jackson的read.value(jsonStr,ArrayList.class)不会出现丢失value为null的key

 
posted @ 2024-01-05 16:33  不想被举的栗子  阅读(0)  评论(0编辑  收藏  举报