将相同的POJO转换为JSON和XML,但忽略JSON的某些属性

时间:2014-01-07 17:47:54

标签: xml json jaxb jersey jackson

我正在使用JAXB注释将POJO转换为按接受类型转换为json或XML。         必需的输出结构:

XML:

<ArrayOfStockAvailability>
   <StockAvailability>
      <ProductId>ProductId1</ProductId>
      <LocationId>LocationId1</LocationId>
      <UnitOfMeasure>Each</UnitOfMeasure>
      <Quantity>1</Quantity>
      <StockKeepingUnit>DEFAULT</StockKeepingUnit>
      <AvailabilityStatus>OUT_OF_STOCK</AvailabilityStatus>
   </StockAvailability>
   <StockAvailability>
      <ProductId>ProductId1</ProductId>
      <LocationId>LocationId2</LocationId>
      <UnitOfMeasure>Each</UnitOfMeasure>
      <Quantity>0</Quantity>
      <StockKeepingUnit>DEFAULT</StockKeepingUnit>
      <AvailabilityStatus>IN_STOCK</AvailabilityStatus>
    </StockAvailability>
</ArrayOfStockAvailability>



JSON :
[
    {
    "ProductId":"103-8173",
    "LocationId":"GMO",
    "UnitOfMeasure":"Each",
    "Quantity":1.0,
    "StockKeepingUnit":"DEFAULT",
    "AvailabilityStatus":"IN_STOCK"
    },
     {
    "ProductId":"322-5810",
    "LocationId":"GMO",
    "UnitOfMeasure":"Each",
     "Quantity":1.0,
    "StockKeepingUnit":"DEFAULT",
    "AvailabilityStatus":"IN_STOCK"
    },
]

POJO :
      @XmlRootElement(name = "ArrayOfStockAvailabiltiy")
        public class ArrayOfAvailabilityStatus extends BasePojo {

            private List<AvailabilityStatus> stockAvailability;

            @XmlElement(name = "StockAvailability")
            public List<AvailabilityStatus> getStockAvailability() {
                return stockAvailability;
            }
        }

 @XmlRootElement   
   public class AvailabilityStatus {
        private String productId;
        private String locationId;  
        private String unitofmeasure;
        private boolean quantity;
        private String stockKeepingUnit;
        private boolean availabilityStatus;

        @XmlElement(name = "ProductId")
        public String getProductId() {
            }
    }

-----------------------------------------------------------------------------

如何在创建JSON时忽略ArrayOfStockAvailabiltiy和StockAvailability。     任何JAXB,泽西,杰克逊相关的建议都受到欢迎。

Thanks in advance

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望在JSON输出中包含POJO中的值,您只是不希望根元素名称出现在JSON中吗?

  

任何JAXB,泽西岛,杰克逊相关的建议都受到欢迎。

您没有分享您正在使用的泽西岛版本。如果:

1)你正在使用泽西2 2)you're will to switch to MOXy as your JAXB implementation 3)你愿意让MOXy产生你的JSON

然后查看MOXyJsonProvider和以下配置属性:

org.eclipse.persistence.jaxb.MarshallerPropertes.JSON_INCLUDE_ROOT org.eclipse.persistence.jaxb.MarshallerProperties.JSON_WRAPPER_AS_ARRAY_NAME