List<Long> 在 Java 中未序列化为 String

Muk*_*han 0 java serialization objectmapper

我们有一类代理assignedUsers作为列表<>

当我们尝试将对象转换为 JSON 文档时,我们使用的是ObjectMapper writeValueAsString方法,该方法不会将 id 序列化为字符串,而是不会在 JSON 字符串中丢失键assignedUsers

import java.io.IOException;
import java.util.List;

import com.fasterxml.jackson.databind.ObjectMapper;

public class Agent {
private List<Long> assignedUserIds;
        private String name;

        private static final String json = "{\"name\":\"New Agency\", \"assignedUserIds\":[23,24]}";

        public String getName() {
                return name;
        }

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

        public List<Long> gocuetAssignedUserIds() {
        return assignedUserIds;
        }

        public void setAssignedUserIds(final List<Long> assignedUserIds) {
                this.assignedUserIds = assignedUserIds;
        }

        public static void main(String[] args) {
                Agent agencyInfo = null;
                try {
                        agencyInfo = new ObjectMapper().readValue(json, Agent.class);
                        System.out.println("Built Agent :: " + new ObjectMapper().writeValueAsString(agencyInfo)); // Outputs: Built Agent :: {"name":"New Agency"}
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }
}
Run Code Online (Sandbox Code Playgroud)

Phi*_*ipp 5

该领域的吸气剂assignedUserIds称为gocuetAssignedUserIds()。这就是为什么它没有被序列化(映射器无法识别它),要么用注释标记它,要么将它@JsonGetter("assignedUserIds")重命名getAssignedUserIds()为匹配字段。