1

I am using JAXB annotation to convert POJO to json or XML as per accept type. Required Output structure:

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

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

How to ignore ArrayOfStockAvailabiltiy and StockAvailability while creating JSON. Any JAXB , Jersey, Jackson related Suggestions are welcomed.

Thanks in advance
Mahesh
  • 243
  • 1
  • 5
  • 13

1 Answers1

1

If I understand correctly, you want to include the values from the POJO in the JSON output, you just don't want the root element names to appear in the JSON?

Any JAXB , Jersey, Jackson related Suggestions are welcomed.

You didn't share which version of Jersey you're using. If:

1) you're using Jersey 2 2) you're will to switch to MOXy as your JAXB implementation 3) you're willing to let MOXy produce your JSON

then check out MOXyJsonProvider and the following config properties:

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

John R
  • 2,066
  • 1
  • 11
  • 17