Как добавить и игнорировать поле для ответа json - PullRequest
6 голосов
/ 17 января 2012

Я использую RestEasy и Hibernate для возврата ответа в Джексоне. У меня есть боб-игрок, имеющий поля: имя, идентификатор, возраст, должность.

Теперь я реализую два GET метода отдыха для восстановления json.

  1. getPlayer(), который возвращает игрока: имя, идентификатор, возраст, должность.

  2. getPlayers(), который возвращает список игроков, но с этим списком игроков я не хочу возвращать позицию.

Я имею в виду, как я могу добавить поле для одного ответа и игнорировать его для другого ответа.

Пожалуйста, предложите.

Спасибо

Ответы [ 3 ]

18 голосов
/ 17 января 2012

Вы должны использовать @JsonIgnore аннотацию на получателе POJO.

http://jackson.codehaus.org/1.0.1/javadoc/org/codehaus/jackson/annotate/JsonIgnore.html

Обновление:

Вам необходимо использовать интерфейс с@JsonIgnoreProperties и установите его как @JSONFilter в вашем сопоставлении запросов.

Подробнее об этом можно прочитать здесь: http://www.jroller.com/RickHigh/entry/filtering_json_feeds_from_spring

0 голосов
/ 24 февраля 2017

Я использую tomee, чтобы игнорировать поле в ответе json transient работает для меня, но я не знаю, правильный ли это путь (в моем приложении нет видимого Джексона, я просто включил jee -web api):

Servlet

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/")
@Produces({ MediaType.APPLICATION_JSON })
public class JsonApi {

    @GET
    @Path("testapi")
    public MyObject testApi() {
        return new MyObject("myname", "mycolor");
    }
}

Object

public class MyObject {

    public MyObject() {
    }

    public MyObject(String name, String color) {
        this.name = name;
        this.color = color;
    }

    public String name;

    public transient String color;
}

Ответ

{"name":"myname"}
0 голосов
/ 23 января 2012

Разве вы не можете просто обнулить поле позиции?

@GET
@Path("/players")
public List<Player> getPlayers(){
    List<Player> players = getPlayersFromHibernate();

    for(Player player : players)
        player.setPosition(null);

    return players;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...