JAXB - 如何序列化集合子类中的字段

2024-03-21

我在序列化我的类(ArrayList 的子类)中的字段时遇到问题。添加到列表中的项目已序列化,但字段未序列化:

@XmlRootElement
public static class NumberedList extends ArrayList<String>{

    @XmlAttribute
    private int number = 5;

    @XmlList
    public List<String> getNames(){
        return this;
    }

    public NumberedList(){
        add("a");
        add("b");
    }
}

@XmlRootElement
public static class FieldTest{

    @XmlElement
    NumberedList list = new NumberedList();
}

public static void main(String[] args) throws Exception{

    JAXBContext context = JAXBContext.newInstance(FieldTest.class);
    Marshaller marshaller = context.createMarshaller();
    marshaller.marshal(new FieldTest(), System.out);
}

//将 NumberedList 序列化为字段的输出:不存在数字字段

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><fieldTest><list>a</list><list>b</list></fieldTest>

奇怪的是,当我将列表添加到 Map 时,类中的字段按照我的预期进行序列化。

@XmlRootElement
public static class NumberedList extends ArrayList<String>{

    @XmlAttribute
    private int number = 5;

    @XmlList
    public List<String> getNames(){
        return this;
    }

    public NumberedList(){
        add("a");
        add("b");
    }
}

@XmlRootElement
public static class MapTest{
    @XmlElement
    Map<Integer, NumberedList> map = Maps.newHashMap();

    public MapTest(){
        map.put(1, new NumberedList());
    }
}

public static void main(String[] args) throws Exception{

    JAXBContext context = JAXBContext.newInstance(MapTest.class);
    Marshaller marshaller = context.createMarshaller();
    marshaller.marshal(new MapTest(), System.out);
}

//序列化Map中的NumberedList的输出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><mapTest><map><entry><key>1</key><value number="5"><names>a b</names></value></entry></map></mapTest>

有任何想法吗?


问题来自于这样一个事实:NumberedList正在延伸ArrayList。添加一个内部ArrayList到该类,然后将其与存在于的其他字段一起序列化NumberedList。请看下面的代码:

@XmlRootElement
public static class NumberedList {
    private List<String> names = new ArrayList<String>();

    @XmlAttribute
    private int number = 5;

    public NumberedList(){
        names.add("a");
        names.add("b");
    }

    @XmlList
    public List<String> getNames(){
        return names;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAXB - 如何序列化集合子类中的字段 的相关文章

  • 无法在 Android 10 中创建目录

    我无法在 android 10 中创建目录 它可以在 android Oreo 之前的设备上运行 我尝试了两种创建文件夹的方法 Using File mkdir File f new File Environment getExternal
  • HashMap不写入数据库

    我尝试在我的数据库中写入 但只写入发件人和消息 我不明白为什么会发生这种情况 我认为问题出在我使用 sendMessage 的地方 我认为问题是我没有什么可以做的读 写其他用户的主键 我在数据库中写入消息的活动 public class M
  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • 为什么 java 编译器不报告 Intellij 中多播表达式的未经检查的强制转换警告?

    为什么下面的代码没有报告 Intellij IDEA 的未经检查的警告jdk 1 8 0 121自从Supplier
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • Java套接字:在连接被拒绝异常时重试的最佳方法?

    现在我正在这样做 while true try SocketAddress sockaddr new InetSocketAddress ivDestIP ivDestPort downloadSock new Socket downloa
  • 无法在 Spring Boot 测试中模拟 persistenceContext

    我正在使用带有 Mockito 框架的 spring boot 测试来测试我的应用程序 存储库类 EntityManager 之一作为参考 我的班级如下所示 Repository Transactional Slf4j public cla
  • Firestore - RecycleView - 图像持有者

    我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
  • 内存一致性 - Java 中的happens-before关系[重复]

    这个问题在这里已经有答案了 在阅读有关内存一致性错误的 Java 文档时 我发现与创建 发生 之前 关系的两个操作相关的点 当语句调用时Thread start 每个具有 与该语句发生之前的关系也有一个 与 new 执行的每个语句之间发生的
  • Java:正则表达式排除空值

    在问题中here https stackoverflow com questions 51359056 java regexp for a separated group of digits 我得到了正则表达式来匹配 1 到 99 之间的一
  • 如何获取 WebElement 的父级[重复]

    这个问题在这里已经有答案了 我试过了 private WebElement getParent final WebElement webElement return webElement findElement By xpath 但我得到
  • 隐式超级构造函数 Person() 未定义。必须显式调用另一个构造函数?

    我正在开发一个项目 但收到错误 隐式超级构造函数 Person 未定义 必须显式调用另一个构造函数 我不太明白它 这是我的人物课程 public class Person public Person String name double D
  • Git 无法识别重命名和修改的包文件

    我有一个名为的java文件package old myfile java 我已经通过 git 提交了这个文件 然后我将我的包重命名为new所以我的文件在package new myfile java 我现在想将此文件重命名 和内容更改 提交
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • 尝试使用等于“是”或“否”的字符串变量重新启动 do-while 循环

    计算行程距离的非常简单的程序 一周前刚刚开始 我有这个循环用于解决真或假问题 但我希望它适用于简单的 是 或 否 我为此分配的字符串是答案 public class Main public static void main String a
  • 为什么java中的for-each循环中需要声明变量

    for 每个循环的通常形式是这样的 for Foo bar bars bar doThings 但如果我想保留 bar 直到循环结束 我可以not使用 foreach 循环 Foo bar null Syntax error on toke
  • 无法捕获 Spring Batch 的 ItemWriter 中的异常

    我正在编写一个 Spring Batch 流程来将数据集从一个系统迁移到另一个系统 在这种情况下 这就像使用RowMapper实现在传递给查询之前从查询构建对象ItemWriter The ItemWriter称为save我的 DAO 上的
  • 挂钩 Eclipse 构建过程吗?

    我希望在 Eclipse 中按下构建按钮时能够运行一个简单的 Java 程序 目前 当我单击 构建 时 它会运行一些 JRebel 日志记录代码 我有一个程序可以解析 JRebel 日志文件并将统计信息存储在数据库中 是否可以编写一个插件或
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5
  • Java &= 运算符应用 & 或 && 吗?

    Assuming boolean a false 我想知道是否这样做 a b 相当于 a a b logical AND a is false hence b is not evaluated 或者另一方面 这意味着 a a b Bitwi

随机推荐

  • 无法执行目标 org.codehaus.mojo exec-maven-plugin

    我有一个问题 我花了5天没有解决 执行时mvn exec java它无法正确解析配置参数 引发以下错误 Failed to execute goal org codehaus mojo exec maven plugin 1 1 java
  • 安装扩展后 Visual Studio 2015 中缺少图标

    我跟着创建 Visual Studio 扩展的步骤 https msdn microsoft com en us library cc138589 aspx但是在VS2015中安装扩展后 Visual Studio在菜单的工具栏中不显示任何
  • 如何禁用从互联网到 Jelastic 节点的入口?

    默认情况下 在 Jelastic 中创建的每个资源都会获得一个 dns 条目 并且可以通过互联网进行访问 对于许多服务 例如数据库 我不希望出现这种行为 这是默认行为 这似乎很不安全 我只想从我的环境中的其他服务或通过 ssh 访问这些内容
  • 使用.net正则表达式平衡匹配捕获内部项目

    我找到了有关 net 正则表达式平衡匹配的以下资源 http weblogs asp net whaggard archive 2005 02 20 377025 aspx http weblogs asp net whaggard arc
  • Prometheus 为每个 pod 的多个指标端点抓取配置

    我们有一个 Kubernetes Pod 它提供多个指标端点 3093 metrics and 9113 metrics 但它还有一个不提供任何指标的端口 80 TL DR 是否可以只刮掉端口3093 and 9113 我们正在使用示例配置
  • WPF ListViewItem 颜色不正确

    我设置了一个非常基本的测试来解决我在使用 Visual Studio 2012 并在 Windows 8 1 上运行的针对 NET Framework 4 的 WPF 中遇到的颜色问题 问题在于 IsSelected 和 IsMouseOv
  • Eclipse与tomcat——eclipse修改server.xml

    我在 使用 tomcat 安装 模式下将 tomcat 与 eclipse 结合使用 我的问题是 eclipse 每次都会覆盖 tomcats server xml 并删除我的 crossContext true 元素 我应该使用自定义位置
  • 如何在 VB 6 中检查对象的类型? - 我不想使用“TypeOf”方法

    如何在 VB 6 0 中检查对象的类型 我们必须修改现有代码以使用 typeof 方法 是否有任何方法 例如将光标移动到对象变量上或像快速监视那样可以看到其类型 我知道以下方法 但我不想使用它 Set fs New Scripting Fi
  • 向 MultiIndex DataFrame 添加一个空行

    正如标题所暗示的 我想在我的MultiIndex DataFrame 第一级索引需要有一个定义的索引值 第二级索引需要是np nan 列中的值需要是np nan 考虑以下 import pandas as pd import numpy a
  • PyUsb USB 条码扫描器

    我正在尝试在 Ubuntu 中使用 Honeywell USB 3310g 扫描仪从条形码或 qrcode 输出字符串 我有 libusb 和一个名为 Metro usb 的库 http gitorious org other metro
  • Scheme/Racket有枚举操作吗?

    Scheme Racket 是否有相当于 Haskell 中的 a b 表示法的枚举表示法 在 Haskell 中 1 5 计算结果为列表 1 2 3 4 5 for list i in range 1 6 i sequence gt li
  • Spark流式批量查找数据

    我需要从 HDFS 上的文件查找 Spark 流作业中的一些数据 该数据由批处理作业每天获取一次 有没有 设计模式 为了这样的任务 如何在执行后立即重新加载内存中的数据 哈希图 每日更新 当查找数据时 如何连续服务流作业被抓取 一种可能的方
  • 电子如何创建增量文件

    I use electron builder构建我的应用程序并成功构建第一个版本 其中包含三个输出 foosetup exe foo 0 0 1 full nupkg 和 RELEASES 现在我想实现自动更新 并且我已经部署了后端服务通过
  • Scala 中语法糖的所有实例是什么?

    Scala 中语法糖的所有实例是什么 它们很难搜索 因为大多数 全部都是纯粹的符号 因此在不知道概念名称的情况下很难搜索 TODO 隐式转换 匿名函数的语法 其他我忘记的事情 Basics a b相当于a b a b c相当于a b c 除
  • 如何在 PHP / XAMPP 中启用 cURL

    如何在 PHP 中启用 cURL On Debian http en wikipedia org wiki Debian with Apache http en wikipedia org wiki Apache HTTP Server 2
  • 使用按钮在 Chart.js 中切换图表

    我是一名初学者开发人员 我一直在尝试使用 ChartJS 将一些数据显示到屏幕上 我希望能够单击一个按钮来生成另一组新的数据 轴 我一直在尝试遵循其他堆栈溢出答案 但似乎没有一个对我有用 请参见下文
  • 在 R 中操作变量以生成新数据集

    我是一个相对较新的 R 用户 如果对我的数据集有任何帮助 我真的很感激 我有一个包含 2400 万行的数据集 数据集中有 3 个变量 患者姓名 药房名称以及该次就诊时从药房领取的药物数量 有些患者多次出现在数据集中 即他们在不同时间点从不同
  • 如何在 dart/Flutter 中使用 Firebase 快照字典上的 SplayTreeMap?

    我已成功通过 StreamBuilder 取回数据并需要对其进行排序 如何按键对快照数据的映射进行排序 另外 如果你给出一个这样做的例子 我的价值也会有所帮助 我想我想做一个 SplayTreeMap 但如果有更好的方法请提供 这是我的字典
  • Knife Bootstrap 的 Chef 节点配置问题 - 无法通过服务器进行身份验证

    我正在尝试使用 Knife Bootstrap 设置厨师客户端节点 knife bootstrap nodename x user P passwd sudo 收到以下错误消息 Chef 在尝试创建客户端 nodename url com
  • JAXB - 如何序列化集合子类中的字段

    我在序列化我的类 ArrayList 的子类 中的字段时遇到问题 添加到列表中的项目已序列化 但字段未序列化 XmlRootElement public static class NumberedList extends ArrayList