我正在尝试使用Jackson流API从XML反序列化巨大的对象。其思想是结合流式API和ObjectMapper来按小块解析XML(或JSON)。但是,我看到了一些与XML解析器不一致的行为。使用以下代码段:
try {
String xml1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><foo></foo>";
String xml2 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><foo><bar></bar></foo>";
XmlFactory xmlFactory = new XmlFactory();
JsonParser jp = xmlFactory.createParser(new ByteArrayInputStream(xml1.getBytes()));
JsonToken token = jp.nextToken();
while (token != null) {
System.out.println("xml1 token=" + token);
token = jp.nextToken();
}
jp = xmlFactory.createParser(new ByteArrayInputStream(xml2.getBytes()));
token = jp.nextToken();
while (token != null) {
System.out.println("xml2 token=" + token);
token = jp.nextToken();
}
} catch (IOException e) {
e.printStackTrace();
}
为什么XML1缺少FIELD_NAME标记?为什么第二个XML只有一个START_OBJECT令牌?是否有任何设置可以让我看到外部标记的FIELD_NAME?
问题很简单:XML模块不同于大多数其他Jackson dataformat模块,它不支持通过流API直接访问。在项目自述文件中提到了这一点(同时也提到了“树模型”同样不受支持)。不支持并不一定意味着“完全不能使用”,只是它的行为不同于JSON的处理,所以调用者真的需要知道他们在JSON内容使用的API之外正在做什么(还有Smile、CBOR、YAML--甚至CSV内容也是以与JSON访问兼容的方式表示的)。
虽然您可以尝试使用XMLFactory
和流解析器/生成器,但它的行为由XMLMapper
根据Java类的元数据控制,以便通过数据绑定API(即XMLMapper
)使事情正常工作。
因此,观察到的令牌的原因是这样的转换对于映射到预期的Java对象结构是必要的:
XMLParser
html" target="_blank">执行的转换,调用getToken()
期望转换XMLParser
,而是构造XMLStreamReader
(Stax低级流解析器),读取“原始”标记,并在预期位置构造单独的XMLParser
(通过XMLFactory
),将其用于读取。希望这能帮上忙。
我目前正在开发一个Java web应用程序,它使用Magento REST API公开的JSON数据。api返回的数据示例如下: 我的应用程序中有一个Java类,如下所示: 我想对数据进行反序列化,并将其转换为,但我总是得到以下错误: 这是我用来将JSON响应反序列化为ArrayList的语句行: 有人能分享一些见解吗?我看到一些例子,返回的JSON对象前面没有任何ID。那是因为我做错了什么吗?非
我需要一个自定义反序列化器来在复杂的POJO中转换字符串。反序列化工作直到使用反序列化器:特别是使用自定义反序列化器时,我的对象的非对象属性不会序列化。 我有一个restful Web服务,它有一个pojo作为参数。 所以我的类PreentivoWs需要一个方法。这里是类定义: 在jsonObject中,我有一个枚举定义为 但此对象需要转换反序列化程序: 并在财产上标注: fromString方法
我有一个抽象的超类A,我有几个具体的子类B,C,D 在序列化方面,我执行以下操作: 没问题。我现在想反序列化这个。我知道我不能实例化一个抽象类,那么这是如何实现的呢? 这不起作用: 编辑:我把这个添加到我的抽象超类中:(仍然没有运气) 再次编辑:我现在遇到以下错误: 看看JSON,@class不在那里。我怎样才能做到?我试过: 但这并没有奏效。有这方面的例子吗?如何告诉对象映射器对类使用我的注释?
使用com。fasterxml。杰克逊。数据绑定。ObjectMapper类(com.fasterxml.jackson.core:jackson-databind:2.9.5)我正在尝试反序列化以下类的对象: 我目前正在执行的代码如下: 在抛出异常的最后一行失败: 通用域名格式。fasterxml。杰克逊。数据绑定。exc.MismatchedInputException:无法构造com的实例。
我正在尝试反序列化JSON对象,例如 Java子对象引用父对象的对象,例如: 像这样反序列化时,子对象#父对象不会指向父对象。我在做在线研究时读到了两种方法,但非似乎有效。 1.向类添加构造函数arg以设置父对象 执行此操作时,我得到错误: 2.使用和注释 此操作失败: JsonBackReference的JavaDoc说它不能应用于集合,所以它显然不起作用,但我想知道为什么在线上有这么多例子将它
我有这样一个实体: 和相关的JSON: 我试图在Spring MVC@Controller中以如下方式对其进行反序列化: 添加