【发布时间】:2022-11-23 05:06:30
【问题描述】:
这是我的代码示例
public record Person(String firstName, String lastName) {}
@Test
void test() {
String json =
"""
{
"firstName": "John",
"lastName": "Doe"
}
""";
Person person = new Gson().fromJson(json, Person.class);
assertEquals("John", person.firstName);
}
这是我得到的一个例外:
java.lang.AssertionError: AssertionError (GSON 2.8.9): java.lang.IllegalAccessException: Can not set final java.lang.String field com.test.GsonTest$Person.firstName to java.lang.String
有没有办法使用 Gson 将 JSON 反序列化为 java 记录?
【问题讨论】:
-
我们可能会使用来自 Lombok 的 @Value 注释而不是记录。这样我们就得到了干净的代码,就像使用记录和 Gson 一样。
-
记录是不可变的,即所有字段都是最终的。检查它 baeldung.com/java-record-keyword 需要类型适配器
标签: java json gson deserialization record