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

标签 java serialization objectmapper

我们有一个Agent类,其signedUsersList<Long>

当我们尝试将对象转换为 JSON 文档时,我们使用 ObjectMapper writeValueAsString 方法,该方法不会将 id 序列化为字符串,而是将键 signedUsers 序列化JSON 字符串中没有遗漏

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();
                }
        }
}

最佳答案

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

关于java - List<Long> 在 Java 中未序列化为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60152086/

相关文章:

Java 日历错误?

java - 是否可以将 float 添加到 double 中?

c# - 如何在C#中使用MessagePack?

c++ - 使用 QDataStream 将 QVariantMap 序列化为 QByteArray

java - 优化对象列表的fasterxml ObjectMapper

ios - Alamofire 序列化太慢

java - 投影矩阵 OpenGL/GLSL 问题

java - Netbeans 可视化库和 java.lang.NoClassDefFoundError

c# - BinaryFormatter 忽略程序集版本

ios - ObjectMapper 条件映射整个元素