其余服务响应
<transaction><trxNumber>1243654</trxNumber><type>INVOICE</type></transaction>
或JSON中:
{"transaction":{"trxNumber":1243654,"type":"INVOICE"}}
使用时没有问题:
mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true)
和作为结果类
@JsonRootName("transaction")
public class Transaction {
private String trxNumber;
private String type;
//getters and setters
}
但是实际上我应该使用第3方jar中的Transaction类,与上面的完全一样, 但是没有@JsonRootName(“
transaction”)批注。
所以我最终
Could not read JSON: Root name 'transaction' does not match expected ('Transaction') for type...
有什么方法可以强制Jackson解析到Transaction类,而无需在Transaction类本身中添加任何内容(因为我将此文件作为二进制jar的一部分来获取)?
我已经尝试过自定义PropertyNamingStrategy,但似乎只与字段和getter / html" target="_blank">setter名称有关,而与类名称无关。
Java7,杰克逊2.0.5。
有什么建议?谢谢。
您可以使用mixin功能来做到这一点。您可以像这样创建简单的界面/抽象类:
@JsonRootName("transaction")
interface TransactionMixIn {
}
现在,您必须配置ObjectMapper
对象:
ObjectMapper mapper = new ObjectMapper();
mapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
mapper.addMixInAnnotations(Transaction.class, TransactionMixIn.class);
最后,您可以使用它反序列化JSON:
mapper.readValue(json, Transaction.class);
第二种选择-您可以为类编写自定义反序列化器Transaction
。
问题内容: 它应该是如此简单,但是在尝试一个小时的尴尬之后,我只是找不到它。 我需要获取一个JSON字符串,例如,解析为。 给 问题答案: 理查兹的答案略有不同,但可以使用字符串,因此可以将其简化为:
我如何告诉Jackson忽略JSON名称? 我有以下POJO: 当我有这样的东西: “ABCName”:“foo”,然后杰克逊没有认出它抛出错误。 它期望的是: “abcName”:“foo”。 代码: 输出:{"abcname":"Foo"} 然后我试着用@JsonProperty(“ABCName”)注释ABCName 在我注释并运行代码之后,我得到的是:{“ABCName”:“Foo”,“A
我试图使用jackson来序列化和反序列化一个POJO。从POJO到JSON可以很好地工作,但是反过来就不行了。 我有一个POJO 并运行和测试我运行的包calendar.model 引发异常 我已经尽我所能让JSON到POJO工作,但它不会。如果我从JSON映射到map类型,它确实有效。 感谢您的帮助 这是我的依赖项中杰克逊的 grep 看起来除了jackson2,没有其他版本的jackson了
问题内容: 我有以下json文件: 但是java模型如下: Jackson解析时会引发异常,因为“ externalId”字段没有getter或setter方法。有没有可以用来忽略json字段的装饰器? 问题答案: 您可以使用注释;如果这只是您要跳过的一个值,则类似于: 或忽略任何无法使用的东西: 还有其他方法可以做到这一点,其余的请查看FasterXML Jackson wiki 。
问题内容: 我有一个下面的JSON,我需要从中制作一个。在下面的JSON中,我只有3个级别,但通常可以更高,有时也可以更低。 我图的关键是它的部分和值应是最后。 现在我可以嵌套在其中,因此在为此创建POJO时遇到问题。我可以有一个级别,也可以嵌套在每个级别中,而我总是需要获取最后一个的ID 。 因此,我通过转到jsonschema2pojo来为此创建一个POJO,并提供了JSON,它在其中生成了我
我想使用Spring的RestTemplate plus Jackson来使用Web服务。我已经学习了几本教程,并且已经达到了创建DAO的目的。这是我获取所有域对象的方法: 但我的Web服务不会立即返回Station对象数组,而是以这种方式返回一个更具语义的表达式: 所以我的问题是,我不知道如何“告诉”RestTemplate在“stations”指示符之后立即解析对象列表,而不创建临时对象,这似