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

JAXB(MOXy)-解组空值

柳宏深
2023-03-14
{
    "accounts": [{
        "description": "A",
        "balance": 1000,
        "balanceAvailable": 1000
    },
    {
        "description": "B",
        "balance": 1001,
        "balanceAvailable": 1001
    },
    {
        "description": "C",
        "balance": 1002,
        "balanceAvailable": 1002
    }],
    "cardPermissions": null,
    "totalBalanceAvailable": 1046.19
}
"cardPermissions": null
"cardPermissions": "null"

在不使用getter和setter的情况下,JAXB可以正确地解组所提供的JSON。

null和“null”是完全不同的东西,但是我不想在POJO中包含这个字段,并且我必须忽略这些null值。

编辑

{
    "customerInfo": {
        "accounts": [{
            "description": "B",
            "balance": 1000,
            "balanceAvailable": 1000
        },
        {
            "description": "C",
            "balance": 1001,
            "balanceAvailable": 1001
        },
        {
            "description": "D",
            "balance": 1002,
            "balanceAvailable": 1002
        }],
        "cardPermissions": null,
        "totalBalanceAvailable": 1046.19
    }
}
@XmlRootElement(name = "customerInfo")
@XmlAccessorType(XmlAccessType.FIELD)
public class CustomerInfo {

    @XmlElement(name = "name")
    private String firstName;

    @XmlElement(name = "surname")
    private String lastName;

    @XmlElement
    private String customerId;

    @XmlElement
    private String email;

    @XmlElement
    private String cardPermissions; //This field has no getter and setter. I need it in order to parse correctly the JSON without the root node "customerInfo"

    @XmlElement
    private List<Account> accounts;

    public CustomerInfo() {

    }

    public CustomerInfo(String firstName, String lastName, String emailAddress) {

        this.firstName = firstName;
        this.lastName = lastName;
        this.email = emailAddress;
    }

    public String getFullName() {

        return firstName + " " + lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public List<Account> getAccounts() {
        return accounts;
    }

    public void setAccounts(List<Account> accounts) {
        this.accounts = accounts;
    }

    public String getCustomerId() {
        return customerId;
    }

    public void setCustomerId(String customerId) {
        this.customerId = customerId;
    }
}

共有1个答案

洪昱
2023-03-14

您有两个选择:

  • 在批注@XmlElement
  • 中将属性 required设置为 false
  • 在所有其他字段的注释@XmlElement中为属性name设置一个值,然后删除不需要的字段。这样做,将忽略该字段。

更多和好的细节去这个旧的帖子。

 类似资料:
  • 如有任何线索将不胜感激。谢谢,约翰 XML是巨大的,但这里有一个片段,序列中的媒体是空的,而它不应该是空的。

  • 我正在使用JAXB/MOXY解组包含约50个此类对象的XML文件: BR

  • 我试图使用XPath将camunda:property元素解组到列表中,以跳过不必要的包装元素。不幸的是,我的财产列表总是空的。它位于Task类中。如有任何帮助,将不胜感激。 编辑#1:我遵循了以下链接,谁应该帮助我的问题,不幸的是,没有成功。http://blog.bdoughan.com/2011/05/specifying-eclipselink-moxy-as-your.html,这是官方

  • 现在我有了这堂课: 并且我有: 如果运行此代码,将得到: 我该怎么解决这个? 我搜索了SO和Google,这些答案都不起作用: 使用Eclipselink.media-type值设置封送器属性时的PropertyException:Application/JSON JAXB javax.xml.bind.PropertyException

  • 嗨,我想使用maven依赖项使用un-marshaling来获取嵌套xml的值,但最终的输出是返回给我空值。我使用了maven项目中的3个包和vehicle.xml包含了car的值,在获取这些值后,我必须将它们插入到access数据库中 我想在最终输出返回null时获得这些值

  • 即使在尝试了许多事情之后也无法找到解决方案,因此在此处发布希望获得一些解决此问题或修复方法。 基本上,如果 ,但是除了< code>Map之外,我还需要一个< code>@XmlElement。因此有一个字段用< code >(映射字段)@XmlPath(" .)和另一个带有< code>@XmlElement的字符串字段,然后我想执行< code >解组。 以下是我尝试 : 下面是它将被< co