gpt4 book ai didi

java - 简单的java库,使用getters/setter而不是属性(GSON)将json反序列化为java对象

转载 作者:行者123 更新时间:2023-12-01 11:25:31 26 4
gpt4 key购买 nike

我目前正在开发基于 REST 的应用程序,需要将 json 对象转换为类。问题是该类来自第三方库,我无权访问源文件。此外,java 对象中的属性与类中的 getter/setter 不匹配(不遵循 java bean 约定)。例如,如果我尝试将以下 json 反序列化为 SimpleObject,我会得到 null 而不是实际数据。

JSON 输入:

{
name: 'Test',
id: '1'
}

要反序列化的 Java 类

public class SampleObject {
private String myName;
private Long myId;

public Long getId() {
return this.myId;
}

public String getName() {
return this.myName;
}
.. // setters
}

测试类

public class TestGson {

public static void main(final String[] args) {
final Gson gson = new Gson();
final SampleObject smapleObject = gson.fromJson("{"
+ "name:'Test',"
+ "id: 1"
+ "}", SampleObject.class);
System.out.println(smapleObject.getName());
System.out.println(smapleObject.getId());
}
}

结果:

null
null

预期:

Test
1

问题是 gson 使用属性来反序列化 json,而我的要求是使用 getter 和 setter。该类对所有属性都有 getter 和 setter,并且不应该有任何没有属性的属性。

是否有任何其他简单的 json 库可以用来实现此目的,而无需修改现有类(无法添加注释,因为源不可用)。我查看了 Jackson,但它似乎为完成如此简单的任务增加了一点复杂性,我的队友对此并不满意。

最佳答案

Jackson 可以做完全相同的事情,而且语法也几乎相同。

例如:

String json = "{\"name\": \"Test\",\"id\": \"1\"}";
ObjectMapper mapper = new ObjectMapper();
SampleObject sample = mapper.readValue(json, SampleObject.class);
System.out.println(sample.getName());

POJO 类:

class SampleObject {
private String myName;
private Long myId;

public Long getId() {
return this.myId;
}

public String getName() {
return this.myName;
}

public void setName(String myName) {
this.myName = myName;
}

public void setId(Long myId) {
this.myId = myId;
}

}

关于java - 简单的java库,使用getters/setter而不是属性(GSON)将json反序列化为java对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30837001/

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