如何仅返回对象列表中的特定字段以提供JSON响应?

时间:2016-09-03 17:03:51

标签: java json object playframework

我试过@JsonIgnoreProperties和@JsonIgnore,但没有幸运..

这是我的主要内容:

@BodyParser.Of(BodyParser.Json.class)
public Result index() {
    //I read the JSON Post request
    JsonNode json = request().body().asJson();
    Item[] items = Json.fromJson(json, Item[].class);

    //I convert all the dueTime from string to jodatime DateTime, using the formatter with ISO 8601
    items = addJodaTime(items);

    //I sort the items by dueTime in jodatime DateTime format
    Arrays.sort(items);

    return ok(Json.toJson(items));
}

并且我把我的忽略的东西放在哪里,这是无效的。

@JsonIgnoreProperties({"dueTimeNew"})
public static class Customer implements Comparable<Customer> {

    public int id;
    public String name;
    public String duetime;
    public String jointime;

    @JsonIgnore
    public DateTime dueTimeNew;

    public DateTime getDueTime() {
        return dueTimeNew;
    }

任何想法如何只返回id和名称?

2 个答案:

答案 0 :(得分:0)

您需要将@JsonIgnore添加到您需要忽略的每个字段。如果你不这样做,杰克逊将添加所有公开或有吸气剂的东西(get???????????方法)。

在您的情况下,您有很多字段,并且只有dueTimeNew被忽略...另请注意,因为您使用的getDueTime方法使用dueTimeNow,也将被添加。如果方法名为getDueTimeNow,则可能会忽略它。

答案 1 :(得分:0)

如何使用您想要返回的字段创建一个单独的响应类?