【问题标题】:How to convert single element to arraylist and format to json using jersey?如何使用球衣将单个元素转换为数组列表并格式化为 json?
【发布时间】:2013-09-11 07:51:22
【问题描述】:

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

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

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

【问题讨论】:

    标签: java json arraylist jersey


    【解决方案1】:

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

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

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

    【讨论】:

    • 只需在private List&lt;LocationDetail&gt; locations 语句上方的LocationData 类中添加注释即可。查看 Jersey 文档如何处理列表。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 2016-06-09
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 2014-08-21
      相关资源
      最近更新 更多