首页 > 其他分享 >jackson序列化报 Null key for a Map not allowed in JSON (use a converting NullKeySerializer?)

jackson序列化报 Null key for a Map not allowed in JSON (use a converting NullKeySerializer?)

时间:2023-04-07 10:22:38浏览次数:40  
标签:Map use map ResultDTO JSON key new 序列化

    报错:"requestParam":null,"errorMsg":"org.springframework.http.converter.HttpMessageNotWritableException: 
Could not write JSON: Null key for a Map not allowed in JSON (use a converting NullKeySerializer?); 
nested exception is com.fasterxml.jackson.databind.JsonMappingException: 
Null key for a Map not allowed in JSON (use a converting NullKeySerializer?) 


long startTime = System.currentTimeMillis();
        Map<Long, ResultDTO> result = new HashMap<>();
        List<Future<Map<Long, ResultDTO>>> tasks = new ArrayList<>();
        TaskExecutor taskExecutor = (TaskExecutor) this.executor;
        IdentifyDTOList.forEach(IdentifyDTO ->
                tasks.add(taskExecutor.submit(() -> {
                    ResultDTO ResultDTO = new ResultDTO();
                    Map<Long, ResultDTO> map = new HashMap<>();
                    try {
                        ResultDTO = Service.this.multiple(IdentifyDTO);
                    } catch (Exception e) {
                        log.error("接口返回错误信息:{}", e);
                        ResponseDTO status = new ResponseDTO();
                        status.setResultCode(e.getCode());
                        status.setMessage(e.getMessage());
                        ResultDTO.setStatus(status);
                    } catch (Exception e) {
                        log.error("接口识别报错:{}", e);
                    }
                    map.put(IdentifyDTO.getAttachmentId(), ResultDTO);
                    return map;
                })));

        tasks.forEach(ft -> {
            try {
                result.putAll(ft.get());
            } catch (Exception e) {
                log.error("接口线程处理失败:{}", e);
            }
        });
        log.info("处理时间: " + (System.currentTimeMillis() - startTime) + "ms");
        return result;



此处 map.put(IdentifyDTO.getAttachmentId(), ResultDTO);
result接收map中key值为null,报该异常;解决方法:在传入的key值中赋给相关的值使其不为null或者改造key的赋值逻辑即可。

标签:Map,use,map,ResultDTO,JSON,key,new,序列化
From: https://www.cnblogs.com/chillymint/p/17295142.html

相关文章

  • JSON序列化和反序列化日期时间的处理
    JSON格式不直接支持日期和时间。DateTime值值显示为“/Date(700000+0500)/”形式的JSON字符串,其中第一个数字(在提供的示例中为700000)是GMT时区中自1970年1月1日午夜以来按正常时间(非夏令时)经过的毫秒数。该数字可以是负数,以表示之前的时间。示例中包括“+0500”的部分可选......
  • JS 模拟鼠标事件mouse over、click
     <!DOCTYPEhtml><html><head><metacharset="utf-8"><metahttp-equiv="content-type"content="text/html;charset=utf-8"><metaname="renderer"content="webkit&quo......
  • C 牛哥与AI (双hash,map处理 )2023年“华为”杯广东工业大学第十七届程序设计竞赛
     思路:从时间复杂度入手,就可以考虑暴力枚举每一种情况,然后利用数据结构去保存这些信息如何保存捏?自己想的是利用map<bitset>去做,真sb直接利用双hash,转化为数值然后map存就彳于了, 记住hash并不是只有字符串才用,01序列甚至图上,或者其他很多抽象的东西要去转......
  • Chrome浏览器插件:CrxMouse(鼠标手势控制浏览器)
    CrxMouse是一款谷歌浏览器插件,它可以通过手势来控制您的浏览器,在您的日常网络浏览中提高效率和速度。插件介绍CrxMouse是一个非常流行的谷歌浏览器插件,它允许您通过鼠标手势来控制您的浏览器。该插件集成了大量的手势功能,使您可以在不使用键盘或鼠标的情况下轻松地进行网页浏览......
  • 【C#】Npoi.Mapper 具体操作方法
    前言    我们在日常开发中对Excel的操作可能会比较频繁,好多功能都会涉及到Excel的操作。在.NetCore中大家可能使用Npoi比较多,这款软件功能也十分强大,而且接近原始编程。但是直接使用Npoi大部分时候我们可能都会自己封装一下,毕竟根据二八原则,我们百分之八十的场景可能都是进......
  • 序列化与transient关键字
    什么是序列化?看到别人说的感觉非常的好。简单来说,我们把对象从内存中变成可存储或传输的过程称之为序列化。 为什么要用序列化?简单来说,我们把对象从内存中变成可存储或传输的过程称之为序列化。 序列化的应用1)将数据转换成二进制流的形式,用于数......
  • suse12sp5主机passwd修改密码不生效排查
    问题现象修改账号密码报错passwd:Authenticationtokenmanipulationerror  解决方案:1、查看磁盘空间dfTH与df-ih2、查看文件是否有隐藏权限lsatter/etc/passwd/etc/shadow3、查看messages日志无明显报错4、最后将required放最后一行解决  required栈成......
  • HashMap排序方法,少见的toArray转为Array 泛型数组 排序,而非ArrayList
        HashMap<String,Integer>hm=newHashMap<>();    hm.put("a",1);    hm.put("c",2);    hm.put("b",3);         Set<Entry<String,Integer>>entrySet=hm.entrySet();      ......
  • map和bean转换工具类
    bean转Map:Map转bean:完整代码:点击查看代码importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjava.lang.reflect.Field;importjava.lang.reflect.Modifier;importjava.util.HashMap;importjava.util.Map;/***map转bean*@authorSappy*@......
  • map的两种遍历方式是什么
    学了Map后,我们都知道Map有两种遍历方式,keySet遍历个entrySet遍历,这里简单介绍一下这两种遍历方式。首先对于一个Map来说,右key列和value列组成,想遍历这个Map,有两种选择第一种keyset的想法是先得到其key列,使用Map的get(key)方法来获取其对应的值,如下图:对应的代码是:第二种思......