2014-01-07 62 views
1

我正在使用JAXB注释将POJO转换为json或XML,按照接受类型。 所需的输出结构:将相同的POJO转换为JSON和XML,但忽略JSON的一些属性

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() { 
      } 
    } 

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

如何忽略ArrayOfStockAvailabiltiy和StockAvailability在创建JSON。 欢迎任何JAXB,Jersey,Jackson相关建议。

Thanks in advance 
+1

您使用的是Jersey 1还是Jersey 2? –

+0

你可以使用JacksonMixInAnnotations,看看这个答案:http://stackoverflow.com/a/22906823/2487263 – raspacorp

回答

1

如果我理解正确的话,你要包括在JSON输出的POJO的价值,你只是不想根元素的名称出现在JSON?

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

你没有分享你正在使用的Jersey版本。如果:

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

然后检查MOXyJsonProvider及以下配置属性:

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