1

Jersey 默认将单个元素转换为 object 。但是客户端期望json中的数据是arraylist

模型类是 LocationDetails

public class LocationDetails {
    private String locationAccount;
    private String locationName;
    private String locationStreet;
    private String locationPostcode;
}

其他具有 LocationDetails 数组列表的类 LocationData 作为

@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"}]}

因为客户端希望数据在列表中。

如何在不改变整个逻辑的情况下转换类型。我正在使用球衣。

4

2 回答 2

1

在您的 中添加@XmlElementWrapper注释List,这应该可以解决问题。如果您对 Jersey 有进一步的问题,请先尝试 XML 输出以查看正在生成的内容。如果 XML 可以,那么 JSON 也可以。

@XmlElement(name="locationDetail")
@XmlElementWrapper(name="locationDetails")
private List<LocationDetail> locationDetails;

请用第一个小写字母命名您的类属性。

于 2013-09-11T08:54:42.153 回答
0

我也有同样的问题,经过大量研究后我发现问题是由于在MyEclipse(持久化容器)中导入的 jar 文件造成的。我已经删除了。相同的代码对我有用。json格式将是[{single element}].

于 2014-01-09T08:29:11.433 回答