Исключить datamember при использовании renderJSON с игровой инфраструктурой - PullRequest
1 голос
/ 30 октября 2011

Мне нужно визуализировать объекты в JSON и отправить их клиенту, но по понятным причинам мне нужно исключить поля, такие как адрес электронной почты и пароль.

Я знаю, что игра использует GSON (от Google?), И вы можете передатькласс сериализатора при вызове метода renderJSON ().Однако я рендерил разные типы классов одновременно, используя контейнерный класс:

public class JSONContainer {

    public List<User> userList;

    public List<Toy> toyList;

}

Для каждого класса можно создать класс Serializer, реализующий метод GSON JsonSerializer<...>.Но если я рендерил объект JSONContainer следующим образом: renderJSON(container) как я могу передать классы сериализатора методу рендеринга?

Или, может быть, есть более простой / лучший способ сделать это?

1 Ответ

3 голосов
/ 30 октября 2011

Взгляните на этот пост , который дает вам несколько вариантов.

Может показаться, что лучшим вариантом является аннотация @Expose (com.google.gson.annotations.Expose), чтобы пометить поля, которые вы хотите сериализовать с помощью Gson. Затем вам нужно использовать GsonBuilder, чтобы специально включать только поля @Expose.

В качестве альтернативы, как вы упомянули в своем посте, вы можете просто создать свою сериализацию самостоятельно. Если вы посмотрите на этот пост , он показывает, как определенные типы классов регистрируются в GsonBuilder, поэтому любой объект, найденный как часть сериализации, будет использовать ваш конкретный сериализатор.

...