泽西岛默认情况下将单个元素转换为对象。但客户端期望json中的数据是arraylist
模型类是LocationDetails
public class LocationDetails {
private String locationAccount;
private String locationName;
private String locationStreet;
private String locationPostcode;
}
其他类LocationData,其LocationDetails的arraylist为
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class LocationData {
private ArrayList<LocationDetails> Locations;
}
并且控制器类使用以下代码转换为JSON:
//Getting location and item along with barcodes
@POST
@Path("/getLocationAndItemData")
@Produces(MediaType.APPLICATION_JSON)
public LocationResponse getAlllocations(){
ArrayList<LocationDetails> locationDetailList = new ArrayList<LocationDetails>();
LocationDetails details = new LocationDetails();
//setting location account
details.setLocationAccount("10125");
locationDetailList.add(details);
}
以下代码将json作为LocationData : {LocationDetails : {"LocationAccount","10125"}}
而我希望它像:
LocationData : {LocationDetails : [{"LocationAccount","10125"}]}
因为客户端希望数据在列表中。
如何在不改变整个逻辑的情况下转换类型。我正在使用运动衫。
答案 0 :(得分:1)
将@XmlElementWrapper
注释添加到List
,这应该可以解决问题。如果您对Jersey有进一步的问题,请先尝试XML输出以查看正在生成的内容。如果XML没问题,那么JSON也是如此。
@XmlElement(name="locationDetail")
@XmlElementWrapper(name="locationDetails")
private List<LocationDetail> locationDetails;
请用第一个小写字母命名您的类属性。
答案 1 :(得分:0)
我也有同样的问题,经过如此多的研究后我发现问题是由MyEclipse
(持久容器)中导入的jar文件引起的。我删除了那个。相同的代码适合我。
json
格式为[{single element}].