2014-01-07 63 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