如何将泽西/杰克逊列表转换为字符串作为响应

时间:2014-04-14 18:08:53

标签: list serialization jersey

我有一个使用solrj填充的List类型字段,它使用getBean()方法将数据直接封送到bean。 solr字段标记为多值,但它确实是单值的。在其余的响应中,我想将其作为单个字符串传输。这是代码

@XmlRootElement
@JsonSerialize(include = Inclusion.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class Record {

    @JsonIgnore
    @Field //solrj field populated based on schema type
    private List<String> titleList;

    public String getTitle() {
        if(titleList!= null && titleList.size() > 0) {
            return titleList.get(0);
        }
        return "";
    }
}

当我从非球衣休息客户那里得到回复对象时,我会看到&#39;标题&#39;字段正确填充为String但使用泽西REST客户端我将其作为空字符串。如何将其正确反序列化为所有REST客户端的派生值?

我从java客户端获得价值

Record response = target.queryParams(queryParams).request().buildGet().invoke(Record.class);

Chrome Rest客户端输出 {       &#34;标题&#34;:&#34;新趋势&#34;,

泽西客户输出 {
    &#34;标题&#34; :&#34;&#34;,

1 个答案:

答案 0 :(得分:0)

我在getter和setter方法上使用@JsonIgnore而不是字段。这适用于反序列化和序列化

@Field("title")
    private List<String> titleList;

@JsonIgnore
public List<String> getTitleList() {
    return titleList;
}

@JsonIgnore
public void setTitleList(List<String> titleList) {
    this.titleList= titleList;
}

public String getTitle() {
    if(titleList!= null && titleList.size() > 0) {
        return titleList.get(0);
    }
    return null;
}