Ошибка синтаксического анализа Java Spring JSON при преобразовании в массив Java

Я пытался отправить список объектов Java через службу REST, но всякий раз, когда я пытаюсь преобразовать его обратно в массив Java, я получаю ошибку синтаксического анализа JSON:

2018-06-10 10:50:08.044  WARN 13680 --- [nio-8080-exec-3] .w.s.m.s.DefaultHandlerExceptionResolver : 
   Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: 
   JSON parse error: Can not deserialize instance of com.master.entity.Greeting[] out 
   of START_OBJECT token; nested exception is 
   com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize 
   instance of com.master.entity.Greeting[] out of START_OBJECT token
   at [Source: java.io.PushbackInputStream@1e32b2a; line: 1, column: 1]

Это класс приветствия:

public class Greeting {

private final long id;
private final String content;

public Greeting() {
    id = 0;
    content = "something";
}

public Greeting(long id, String content) {
    this.id = id;
    this.content = content;
}

public long getId() {
    return id;
}

public String getContent() {
    return content;
}
}

Метод ответа REST:

@RequestMapping("/getlist")
public List<Greeting> getList(Model model) {
    List<Greeting> greetings = new ArrayList<>();
    greetings.add(new Greeting(1, "Something"));
    greetings.add(new Greeting(2, "Something"));
    greetings.add(new Greeting(3, "Something"));
    greetings.add(new Greeting(4, "Something"));
    return greetings;
}

Мой метод запроса:

public void restGet() {
    String url = "http://192.168.0.11:8080/greeting";
    RestTemplate restTemplate = new RestTemplate();
    restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());

    ResponseEntity<Greeting[]> responseEntity = restTemplate.getForEntity(url, Greeting[].class);
    Greeting[] greeting = responseEntity.getBody();
    for (int i = 0; i < greeting.length; i++) {
        System.out.println("\n id: " + greeting[i].getId());
    }
}

А это строка JSON:

[{"id":1,"content":"Something"},{"id":2,"content":"Something"},{"id":3,"content":"Something"},{"id":4,"content":"Something"}]

Любая помощь приветствуется. Спасибо!

Ваш маршрут в контроллере - «/ getlist», но вы вызываете «/ приветствие» в своем методе restGet. Можете ли вы убедиться, что звоните по правильному маршруту?

raiyan 10.06.2018 11:00

Что ж, неловко. Я также использую этот метод для одного объекта и забыл изменить URL-адрес. Спасибо за ваш ответ! Я должен был сам об этом подумать.

M. Chris 10.06.2018 12:02
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
1 630
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я изменил URL-адрес на правильный, как предложил Райан, и теперь он работает нормально.

Другие вопросы по теме