gpt4 book ai didi

java - 从 json 部分修改 java 对象

转载 作者:行者123 更新时间:2023-12-01 12:40:37 24 4
gpt4 key购买 nike

我希望能够从 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 类中的每个字段编写特定代码?

最佳答案

如果可以选择使用 Jackson 作为解串器,您可以使用数据持有者中的注释:

@JsonAnySetter
public void set(String name, Object value);
@JsonAnyGetter
public Map<String, Object> get();

关于java - 从 json 部分修改 java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25136840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com