当前位置: 首页 > 知识库问答 >
问题:

如何使用Jackson将Java类转换为XML文件

刘选
2023-03-14

对于Maven,除了JUNIT 4之外,我还有jackson的“databind”和“dataformat xml”依赖项。我创建了一个名为“simple Bean”的简单Java类,其中包含两个初始化的整数。使用XmlMapper类的一个实例,我试图编写其“方法writeValue”,但它引发了异常:“InvalidDefinitionException”,并显示消息“未找到SimpleBean类的序列化程序,也未找到创建BeanSerializer的属性”。我添加了序列化注释,但返回的类名格式不正确。

     public class javaTest {
        public static void main(String[] args) throws StreamReadException, DatabindException,IOException {
    
        whenJavaSerializedToXmlFile_thenCorrect();  
    }
    
        @Test
        public static void whenJavaSerializedToXmlFile_thenCorrect() throws IOException {
        XmlMapper xmlMapper = new XmlMapper();
       
        xmlMapper.writeValue(new File("simple_bean.xml"), new SimpleBean());
        File file = new File("simple_bean.xml");
        assertNotNull(file);
        }

//@JsonSerialize 
public class SimpleBean {
    private int x = 1;
    private int y = 2;
}

错误是

线程“main”com中出现异常。fasterxml。杰克逊。数据绑定。exc.InvalidDefinitionException:未找到SimpleBean类的序列化程序,也未找到用于在com上创建BeanSerializer的属性(为了避免异常,请禁用SerializationFeature.FAIL\u ON\u EMPTY\u BEANS)。fasterxml。杰克逊。数据绑定。exc.InvalidDefinitionException。来自com上的(InvalidDefinitionException.java:77)。fasterxml。杰克逊。数据绑定。SerializerProvider。com上的reportBadDefinition(SerializerProvider.java:1300)。fasterxml。杰克逊。数据绑定。数据绑定上下文。com上的reportBadDefinition(DatabindContext.java:400)。fasterxml。杰克逊。数据绑定。序列号。实施。未知的串行化器。com上的failForEmpty(UnknownSerializer.java:46)。fasterxml。杰克逊。数据绑定。序列号。实施。未知的激化剂。在com上序列化(UnknownSerializer.java:29)。fasterxml。杰克逊。数据格式。xml。序列号。XmlSerializerProvider。com上的serializeValue(XmlSerializerProvider.java:109)。fasterxml。杰克逊。数据绑定。ObjectMapper_com上的writeValueAndClose(ObjectMapper.java:4569)。fasterxml。杰克逊。数据绑定。ObjectMapper。javaTest上的writeValue(ObjectMapper.java:3764)。当javaTest中的JavaSerializedToxmlFile\u thenCorrect(javaTest.java:34)时。main(javaTest.java:26)抑制:com。fasterxml。杰克逊。果心JsonGenerationException:当文档没有根时,尝试编写END\u文档(即尝试输出空文档)。在com。fasterxml。杰克逊。数据格式。xml。util。斯塔克斯蒂尔。com上的throwAsGenerationException(statutil.java:47)。fasterxml。杰克逊。数据格式。xml。序列号。Toxml发电机。在com上关闭(ToXmlGenerator.java:1290)。fasterxml。杰克逊。数据绑定。util。ClassUtil。com上的closeonfailandrowasioe(ClassUtil.java:497)。fasterxml。杰克逊。数据绑定。ObjectMapper_WriteValue和Close(ObjectMapper.java:4571)。。。3更多原因:javax。xml。流动XMLStreamException:当文档没有根时,尝试写入END\u文档(即尝试输出空文档)。在com。反恐委员会。wstx。sw。BaseStreamWriter。com上的throwOutputError(BaseStreamWriter.java:1589)。反恐委员会。wstx。软件。BaseStreamWriter。com上的reportNwfStructure(BaseStreamWriter.java:1618)。反恐委员会。wstx。sw。BaseStreamWriter_com上的finishDocument(BaseStreamWriter.java:1444)。反恐委员会。wstx。软件。BaseStreamWriter。在com上完全关闭(BaseStreamWriter.java:926)。fasterxml。杰克逊。数据格式。xml。序列号。Toxml发生器。关闭(ToXmlGenerator.java:1285)。。。5个以上

如果我删除@JsonSerializ旁边的注释符号,它只需输出一个包含数据的文本文件

<SimpleBean/>

如何将类正确格式化为XML。

预期输出:

<SimpleBean>
<x>1</x>
<y>2</y>
</SimpleBean>

共有1个答案

薛元忠
2023-03-14

在为简单的bean类字段添加getter和setter之后,它们是私有的。

 类似资料:
  • 问题内容: 我想将输入的Excel文件转换为输出XML文件。 如果有人在Java中对如何获取输入Excel文件以及如何将XML写入输出有任何解决方案,请提供任何代码或URL或任何其他解决方案。 谢谢, 米沙尔·沙(Mishal Shah) 问题答案: 查看jexcel或Apache POI库以读取Excel文件。 创建XML文件很简单,只需将XML直接写到文件中,或附加到XML文档中,然后使用标准

  • 本文向大家介绍使用Java中的Jackson库将XML转换为POJO?,包括了使用Java中的Jackson库将XML转换为POJO?的使用技巧和注意事项,需要的朋友参考一下 该JSON杰克逊是一个Java库。它具有非常强大的数据绑定功能,并提供了一个框架,用于将自定义Java对象序列化为JSON并将JSON反序列化为Java对象。我们还可以使用XmlMapper 类的readValue()方法将

  • 本文向大家介绍使用Java中的Jackson库将POJO转换为XML?,包括了使用Java中的Jackson库将POJO转换为XML?的使用技巧和注意事项,需要的朋友参考一下 一个杰克逊 是一个基于Java的库,它可以为Java对象到JSON和JSON转换为Java对象很有用。一个杰克逊API是快于其他的API,需要更少的内存区域,对于大型物体良好。我们使用XmlMapper 类的writeVal

  • 我有如下XML文件: 如何快速将其转换为C#类以通过LINQ使用access数据?我必须为任何XML文件情况手动编写类吗?那么JSON格式呢?

  • 我正在使用来自另一个web服务的XML数据进行java项目。我是杰克逊框架的新手。创建POJO文件,但在映射时会显示错误,如无法识别的字段列。我不知道如何映射我的反应 XML响应 细胞集类 排课 细胞类 帮我解决这个问题。

  • 问题内容: 我需要帮助来理解使用java将XML文件转换为CSV文件所涉及的步骤。这是XML文件的示例 这是生成的CSV文件。 我当时正在考虑使用DOM解析器读取xml文件。我遇到的问题是,我需要按名称指定要编码的特定元素,但我希望它能够解析它而不这样做。 Java中是否有任何工具或库可以帮助我实现这一目标。 如果我下面有这种格式的XML文件,并且想在与MSgId相同的行中添加InitgPty的值