我正在使用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
答案 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