dromara / hutool

🍬A set of tools that keep Java sweet.
https://hutool.cn
Other
28.91k stars 7.48k forks source link

BeanUtil.mapToBean 无法反序列化JsonNode类型的数据 #3625

Closed killestgod closed 2 months ago

killestgod commented 2 months ago

版本情况

JDK版本: openjdk_8_201 hutool版本: 5.8.22

问题描述(包括截图)

无法反序列化JsonNode类型的数据

  1. 复现代码

    @TableField(value = "paragraph_infos", typeHandler = com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler.class)
    @ApiModelProperty(value = "逻辑图数据信息")
    private JsonNode paragraphInfos;

    传值 "paragraphInfos":"[{\"Name\":\"2024/6/21 14:21:34\",\"Id\":\"15b3aa00e7924589a120f70fe4e1d1ff\",\"DesignItemInfos\":[],\"ConnectionInfos\":[]}]"

        Node formNode = BeanUtil.mapToBean(map, Node.class, false);
  2. 堆栈信息 Can not Converter from [java.lang.String] to [com.fasterxml.jackson.databind.JsonNode] cn.hutool.core.convert.ConvertException: Can not Converter from [java.lang.String] to [com.fasterxml.jackson.databind.JsonNode] at cn.hutool.core.convert.ConverterRegistry.convert(ConverterRegistry.java:247) ~[hutool-all-5.8.22.jar:5.8.22] at cn.hutool.core.convert.ConverterRegistry.convert(ConverterRegistry.java:262) ~[hutool-all-5.8.22.jar:5.8.22] at cn.hutool.core.convert.Convert.convertWithCheck(Convert.java:753) ~[hutool-all-5.8.22.jar:5.8.22] at cn.hutool.core.bean.copier.CopyOptions.lambda$new$0(CopyOptions.java:90) ~[hutool-all-5.8.22.jar:5.8.22] at cn.hutool.core.bean.copier.CopyOptions.convertField(CopyOptions.java:347) ~[hutool-all-5.8.22.jar:5.8.22] at cn.hutool.core.bean.copier.MapToBeanCopier.lambda$copy$0(MapToBeanCopier.java:91) ~[hutool-all-5.8.22.jar:5.8.22] at java.util.LinkedHashMap.forEach(LinkedHashMap.java:684) ~[na:1.8.0_271] at cn.hutool.core.bean.copier.MapToBeanCopier.copy(MapToBeanCopier.java:60) ~[hutool-all-5.8.22.jar:5.8.22] at cn.hutool.core.bean.copier.BeanCopier.copy(BeanCopier.java:92) ~[hutool-all-5.8.22.jar:5.8.22] at cn.hutool.core.bean.BeanUtil.copyProperties(BeanUtil.java:771) ~[hutool-all-5.8.22.jar:5.8.22] at cn.hutool.core.bean.BeanUtil.fillBeanWithMap(BeanUtil.java:489) ~[hutool-all-5.8.22.jar:5.8.22] at cn.hutool.core.bean.BeanUtil.fillBeanWithMap(BeanUtil.java:442) ~[hutool-all-5.8.22.jar:5.8.22] at cn.hutool.core.bean.BeanUtil.fillBeanWithMap(BeanUtil.java:428) ~[hutool-all-5.8.22.jar:5.8.22] at cn.hutool.core.bean.BeanUtil.mapToBean(BeanUtil.java:368) ~[hutool-all-5.8.22.jar:5.8.22]

looly commented 2 months ago

JsonNode是Jackson的内部对象,这个对象并非标准bean,要转换为Bean,考虑使用Jackson方法完成,而不是BeanUtil。