Skip to content

[BUG] JSONArray toJavaList 字段不能被复用 #1567

Closed
@hunao0221

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;
    }
}
image

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions