Конвертировать JSON в POJO - PullRequest
9 голосов
/ 21 июня 2011

Я использую Джерси для REST WS и получаю ответ как JSON. Я хочу преобразовать этот ответ в POJO. Как это сделать ? Thnx

Ответы [ 5 ]

10 голосов
/ 21 июня 2011

Для преобразования между Java и JSON доступно большое количество API, доступных для выбора.

Вы можете "вручную" пройтись по компонентам JSON и извлечь значения для заполнения объектов Java, или вы можете использовать API привязки JSON-to-Java для решения многих проблем низкоуровневого отображения.

Джексон - это такой API. Он прост в использовании и предоставляет, пожалуй, самый полный набор функций API для решения общих проблем и настроек. StackOverflow.com имеет много примеров того, как его использовать.

1 голос
/ 21 июня 2011

В качестве опции вы можете проверить JSON Simple .

0 голосов
/ 18 июня 2015

Искал то же самое, и, поскольку другие требуют, чтобы вы добавляли аннотации или писали / генерировали методы получения и установки для своих переменных, я написал свой собственный кодек для работы с преобразованиями JSON <-> POJO с использованием отражений.

Смотрите здесь: http://homac.cakelab.org/projects/org.cakelab.json

0 голосов
/ 23 января 2014

Мы также можем использовать указанные ниже зависимости и плагин в вашем файле pom.

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>1.7.1</version>
</dependency>

<plugin>
    <groupId>com.googlecode.jsonschema2pojo</groupId>
    <artifactId>jsonschema2pojo-maven-plugin</artifactId>
    <version>0.3.7</version>
    <configuration>
        <sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>
        <targetPackage>com.example.types</targetPackage>
    </configuration>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Используя их, вы можете генерировать POJO в соответствии со своей схемой JSON, а затем использовать код, приведенный нижезаполнить объект JSON запроса через объект src, указанный в качестве параметра для gson.toJson(Object src):

Gson gson = new GsonBuilder().create();
String payloadStr = gson.toJson(data.getMerchant().getStakeholder_list());
0 голосов
/ 26 октября 2012

Вы также можете использовать привязку JaxB, которая будет обрабатывать преобразование для вас. Он является частью Java SE, поэтому загрузка jar не требуется. Однако вам нужно написать класс pojo со всеми атрибутами, которые будет возвращать ваш объект json, и методы доступа для их оценки. Затем вы добавили бы аннотацию XmlRootElement для этого класса, что позволит jaxb конвертировать в и из json, где это необходимо. Пример:

POJO

 @XmlRootElement
public class User
{
    private String name;

   public void setName (String name)
   {
      this.name = name;
   }

   public String getName ()
   {
       return name;
   }

}

Джерси-сервис

 @GET
 @Produces (MediaType.APPLICATION_JSON)
 public User getUser ()
 {
     User user = new User ();
     user.setName ("John Doe");
     return user;
 }

Это преобразует объект POJO пользователя и возвращает его имеет тип носителя, указанный в этом примере JSON. Вы даже можете вернуться это с объектом Response. Пример:

  @GET
 @Produces (MediaType.APPLICATION_JSON)
 public Response getUser ()
 {
     User user = new User ();
     user.setName ("John Doe");
     return Response.status (Status.OK).entity (user).build ();
 } 

Возвращает объект Response с кодом 200 (Success) вместе с пользователем JSON. объект. [ПРИМЕЧАНИЕ] Этот подход является предпочтительной причиной. Он предоставляет пользователю, который вызывает Ваш веб-сервис информация о статусе транзакции или сервиса

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