当前位置: 首页 > 知识库问答 >
问题:

Spring Boot反序列化snake case到camel case失败。无法将“some_value”反序列化为“someValue”

季稳
2023-03-14

因此,我有一个Spring Boot应用程序,它必须将参数为“some_value=1500&some_other_value=50000”的GET请求带给一个属性为someValue和someOtherValue的对象。

重要的细节:当我尝试序列化对象时,它会将someValue=>some_value和someOtherValue=>some_other_value转换。所以我知道配置是“好的”,但它拒绝将snake情况下的请求参数映射到我需要的camel情况。(而且不...我无法控制请求格式。我获取snake大小写中的参数,我必须将它们映射到camel大小写)

请帮帮忙。谢谢!

共有1个答案

索寒
2023-03-14

所以@barath是对的,您不能从get params获得干净的反序列化对象。但有个变通办法。不知道这到底有多合法...但它是这样的:

@Autowired private ObjectMapper objectMapper;

@GetMapping("/users")
    public User users(@RequestParam Map<String,String> params){
        User u = objectMapper.convertValue(params,User.class);
        return u;
    }

这样,您仍然可以使用GET方法,并且可以将所有参数反序列化为一个很好的小对象,以便您执行任何操作。希望这对任何人都有帮助。我希望Spring/Jackson人员能够像使用POST方法一样自动反序列化GET参数。

 类似资料:
  • 问题内容: 我试图序列化和反序列化内部对象的数组列表: HairList对象也是一个可序列化的对象。 此代码执行返回以下错误: 排队 我不知道我在做什么错。你能给个小费吗? 更新: 解决: 仅使用HairBirt的本机数组而不是ArrayList即可工作: 代替 感谢大家的帮助。 问题答案: 不要使用-而是使用二进制数据并对它进行base64编码,以将其转换为字符串而不会丢失信息。 我强烈怀疑这是

  • 问题内容: 作为一个小项目,我一直在尝试做一个小事,它可以读取序列化的lambda(从本地或从FTP)并调用它们的运行函数作为测试的一部分,以测试Windows中的文件关联(即打开某些文件类型)使用特定程序打开它们),但不管如何,无论如何,它似乎从未正确地反序列化。 lambda被这样声明 并使用由ObjectOutputStream包装的[n可选] BufferedOutputStream包装的

  • 问题内容: 在hibernate状态下执行条件查询时,出现以下异常: 可能是什么问题呢? PS:虽然可能不相关,但我的hibernate版本是hibernate-4.0.1 final。 问题答案: 问题在于被引用的实体对实体有另一个引用,并且该关系未由任何-like注释进行注释。

  • 问题内容: 我正在使用Hibernate的两个表,但我不明白为什么对于特定查询我有此问题。我希望有人意识到这个问题。 我有一个桌子用户 和一个桌子区域 日志说: 问题答案: 我建议仅在字段或getter上设置注释。我更喜欢田野,但那只是我的口味。 请参阅Hibernate中有关字段和属性访问的奇怪案例: 因此,要么将注释仅放置在字段上,要么仅放置在getters(properties)上。混合它们

  • 作为一个小项目,我一直在尝试制作一个小东西来读取序列化的lambda(本地或从FTP)并调用它们的run函数,作为测试的一部分,以在Windows中试验文件关联(即打开某些文件类型会用某个程序打开它们)等等,但无论我尝试什么,它似乎都无法正确地反序列化。 lambda是这样宣布的 并使用由ObjectOutputStream包装的[n可选]BufferedOutputStream包装的FileOu

  • 我想创建mysql字符串数组类型的数据字段。因此,我在我的spring-boot gradle项目中创建模型类,如下所示。 这是我的存储库,它通过JpaRepository扩展 但是当我在controller类中运行'getQuestions()'函数时,它给出了以下错误。 嵌套异常为org.hibernate.type.serializationexception:无法反序列化org.sprin