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

如何从@ToString lombok注释生成的字符串转换为object?

穆宾白
2023-03-14

我有一个有趣的问题要解决。

让我们考虑以下类别(人员和电话):

@AllArgsConstructor
@Getter
@Setter
@ToString
public class Person {
    private String name;
    private int age;
    private Telephone telephone;
}

电话

@AllArgsConstructor
@Getter
@Setter
@ToString
public class Telephone {
    private int codeArea;
    private String number;
}

假设我有一个由lombok注释@ToString生成的Person对象字符串:

Person(name=John, age=30, telephone=Telephone(codeArea=16, number=1111-2222))

如何将上面的字符串再次转换为对象?是否有任何库可以帮助我完成这个过程,或者我必须手动为其创建解析器?

我知道还有其他方法,比如生成json或序列化为java对象,然后将其转换回来。然而,现在这不是我的解决方案,因为我必须使用上面提到的字符串

共有2个答案

阎作人
2023-03-14

最后,我想出了将这个字符串转换为JSON格式,然后将其转换为对象的想法。

因此,龙目生成的字符串是:

Person(name=John, age=30, telephone=Telephone(codeArea=16, number=1111-2222))

然后通过分别将以下字符(、=和)替换为{、:和}并删除类名,将其转换为JSON:

{name:John, age:30, telephone:{codeArea=16, number=1111-2222}}

现在可以将JSON转换为对象。

我在Github中创建了一个项目来进行这种转换。

秦涵映
2023-03-14

相反,在课堂上这样做。

/**
 * Object as JSON string.
 * @return
 */
public String toString() {
    // Initiate GSON = new GsonBuilder().create();
    return GSON.toJson(this);
}

从对象到字符串:object.toString()。

从字符串到对象:GSON。fromJson(jsonString,ModelClass);

 类似资料:
  • 问题内容: 我正在阅读有关python的新f字符串的 博客 ,它们看起来很整洁。但是,我希望能够从字符串或文件中加载f字符串。 我似乎找不到任何执行此操作的字符串方法或其他函数。 从上面我的链接中的示例: 但是,如果我有琴弦怎么办?我希望能够像这样: 事实证明,我已经可以执行类似的操作并获得性能提高。即: 问题答案: f字符串是代码。不仅以安全的方式(当然,字符串文字就是代码),而且以危险的任意代

  • 我遇到了这样一个java字符串,其中以下内容是错误的: 我想这是因为字符串构造函数默认将主体字节[]的编码视为UTF-8,我不是100%确定。我如何能够将此字符串存储在字节[]中,并能够稍后将其转换回来?我想我需要能够确定字节[]的编码方式。我该怎么做呢? 一些上下文:我需要字节[],以便压缩数据,将其存储在数据库中,然后解压缩并将未压缩的字节[]转换回原始字符串。这个字符串最初来自某个下载了网页

  • 我有一个字符串返回给我,其中包含转义字符。 这是一个示例字符串 " test\40gmail.com " 如您所见,它包含转义字符。我需要将其转换为其实际值,即 " test@gmail.com " 我该怎么做?

  • 问题内容: 我有一个,我需要一个。如何从一个转换为另一个? 问题答案: 好问题。我有以下五种 6种方法可以做到这一点。 注意:返回。因此有效地两者是相同的。 调用,这又设置了数组。 另一方面,调用以下程序包私有构造函数。 从源代码中的Java 8的源代码 因此似乎是最有效的方法,在这两个存储器和速度方面,用于转换char到String。

  • 问题内容: 我一直在尝试使用 GZIPOutputStream 等,但在理解它们方面没有成功。我要做的就是将字符串- “字符串” 转换为GZIP Base64格式。我怎样才能做到这一点? 编辑: 通过GZIP Base64格式,我的意思是字符串首先使用GZIP压缩,然后转换为Base64 问题答案: 使用Apache Commons Codec 。 这是一个示例类: 哪个输出: 在Linux下,您

  • 问题内容: 我想获取一串字符串并将其转换为单词对流。例如: 我有: 我想要:。 这几乎与Zipping相同,如使用带有Lambda的JDK8的Zipping流中概述的那样(java.util.stream.Streams.zip) 但是,这会产生: 以下代码有效,但显然是错误的方法(不是线程安全的等): 问题答案: 如果你: 不喜欢使用流中所有字符串创建列表的想法 不想使用外部库 喜欢弄脏你的手