我希望能够从JSON字符串修改java对象,而无需指定每个字段。例如:
package controller.test;
import com.google.gson.Gson;
public class Tests {
public Tests() {
test();
}
private void test() {
Person realPerson = new Person();
realPerson.setName("Bobby");
realPerson.setAge(28);
// Now trying to set the name from a JSON string
Gson gson = new Gson();
Person modifiedPerson = gson.fromJson("{\"name\":\"Justin\"}", Person.class);
System.out.println(gson.toJson(realPerson));
// prints: {"name":"Bobby","age":28}
System.out.println(gson.toJson(modifiedPerson));
// prints: {"name":"Justin","age":0}
}
public static void main(String[] args) {
new Tests();
}
}
class Person {
private String name;
private int age;
public Person() {
}
// Getters & setters are added here
}
如何在不必指定年龄的情况下将realPerson.name从“Bobby”修改为“Justin”?
对于像这个例子这样的小班级来说,这不是一个大问题:我可以单独检查和设置每个字段。但我的班级包含138个(!)不同的字段。
编辑:
我的问题可能解释得很糟糕,让我总结一下我的问题:
我有一个类的实例(大约130个不同的字段都设置为单独的值)。
我希望能够使用JSON字符串修改此实例中的值。
示例JSON字符串:{“field13”:“5”,“field100”:“2”}
有没有办法在不必为我的java类中的每个字段编写特定代码的情况下完成此任务?
答案 0 :(得分:1)
如果可以选择使用Jackson作为反序列化器,则可以使用数据持有者中的注释:
@JsonAnySetter
public void set(String name, Object value);
@JsonAnyGetter
public Map<String, Object> get();