Closed
Description
问题描述
目标class中的两个不同字段都是用@JSONField 引用同一个字段,其中一个无法被赋值
环境信息
请填写以下信息:
- OS信息: Apple M1 MacOS 13.4 (22F66)
- JDK信息: openjdk version "11.0.18" 2023-01-17 LTS
- 版本信息:Fastjson2 v2.0.33
public class FastJsonTest {
@Test
void toJavaList() {
String data = "[{\"id\":\"1001\",\"name\":\"Jack\"},{\"id\":\"1002\",\"name\":\"Rose\"}]\n";
JSONArray array = JSONArray.parse(data);
List<User> userList = array.toJavaList(User.class);
assertEquals(2, userList.size());
Optional<User> first = userList.stream().filter(i -> "1001".equals(i.getId())).findFirst();
assertTrue(first.isPresent());
User user = first.get();
assertEquals("1001", user.getId());
// name 或者nickname会为null, 之前用的版本2.0.25是没问题的
assertNull(user.getName());
assertEquals("Jack", user.getNickname());
}
@Data
@AllArgsConstructor
@NoArgsConstructor
static class User {
@JSONField(name = "id")
private String id;
@JSONField(name = "name")
private String name;
@JSONField(name = "name")
private String nickname;
}
}