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

Hen*_*ero 9 java object tostring lombok

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

让我们考虑以下类(PersonTelephone):

@AllArgsConstructor
@Getter
@Setter
@ToString
public class Person {
    private String name;
    private int age;
    private Telephone telephone;
}
Run Code Online (Sandbox Code Playgroud)

电话

@AllArgsConstructor
@Getter
@Setter
@ToString
public class Telephone {
    private int codeArea;
    private String number;
}
Run Code Online (Sandbox Code Playgroud)

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

Person(name=John, age=30, telephone=Telephone(codeArea=16, number=1111-2222))
Run Code Online (Sandbox Code Playgroud)

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

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

Bat*_*man 6

相反,在课堂上这样做。

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

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

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


Hen*_*ero 2

最后我想到了把这个字符串转成JSON格式,然后转成对象的想法。

所以,lombok生成的字符串是:

Person(name=John, age=30, telephone=Telephone(codeArea=16, number=1111-2222))
Run Code Online (Sandbox Code Playgroud)

然后将其转换为 JSON,方法是将以下字符(=)分别替换为{:},并删除类名:

{name:John, age:30, telephone:{codeArea=16, number=1111-2222}}
Run Code Online (Sandbox Code Playgroud)

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

我在 Github 中创建了一个项目来执行此转换。

  • 我觉得更换没那么简单。 (6认同)