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

问题描述

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

让我们考虑以下类( Person Telephone ):

人员

ol li:before {
  content: attr(number-prefix)  counter(item,decimal) '. ';
  counter-increment: item;
}

电话

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

并假设我有一个由龙目岛注释 @ToString 生成 Person 对象字符串:

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

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

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

解决方法

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

因此,lombok生成的字符串为:

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中创建了一个project进行转换。

,

相反,在课堂上这样做。

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

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

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