首页 > 解决方案 > 如何在 Kotlin 中将字符串转换为对象

问题描述

我有一个字符串如下:

IngestDataRequestDto(initiatorEmail=sample@sample.com, ingestionDetails=IngestionDetails(selectedColumns={...

我想将其转换为 IngestDataRequestDto.kt 数据类。

我尝试将反序列化与杰克逊一起使用,也尝试使用直接投射,但两者都没有奏效

  try {
      previousValue = SerializationService.deserialize(sample.previousValue, IngestDataRequestDto::class)
    } catch (e: Exception) {
      previousValue = sample.previousValue as IngestDataRequestDto
    }

尝试给出杰克逊错误,将字符串捕获到对象异常

标签: javajsonkotlinjackson

解决方案


该字符串似乎是通过toString()调用某个IngestDataRequestDto对象生成的,因此它没有正确格式化为 Json 或类似的东西,因此无法使用这些步骤进行反序列化。

对于此任务,您需要自己实现反序列化器,可能使用正则表达式,或者,如果该字符串始终遵循该格式,您可以制作一个模板来提取您需要的信息。

尽管如此,这绝对不是最好的方法,您应该首先搜索生成该字符串的内容,并检查是否有更好的方法来获取该对象的数据。


推荐阅读