@thatmaniscool

Spring как отправить JSON строку?

Пишу класс на spring.
import java.util.HashMap;
import java.util.Map;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class JSON {

	@GetMapping("/json")
	public String getJSON2() {
		return "{ \"id\": 10, \"name\": \"Clementina DuBuque\", \"username\": \"Moriah.Stanton\","
				+ " \"email\": \"Rey.Padberg@karina.biz\", "
				+ "\"address\": { \"street\": \"Kattie Turnpike\", "
				+ "\"suite\": \"Suite 198\", \"city\": \"Lebsackbury\", "
				+ "\"zipcode\": \"31428-2261\", \"geo\": { \"lat\": "
				+ "\"-38.2386\", \"lng\": \"57.2232\" } }";
	}
}


$(document).ready (function(){
    $.ajax({
        url: "/api/json", //https://localhost:8080 - как я понял, вообще использовать нельзя. 
        method: "GET",
        data: { command: "GetDriverInfo" }, 
        dataType: "json",
        success(response) {
            console.log(response.driverVer);
        },
        error(xhr) {
            console.log(`${xhr.status}: ${xhr.statusText}`);
        }
    });
});


В результате выполнения, функция не выполняется, но при этом если набрать в браузере https://localhost:8080/api/json строка выдается.
  • Вопрос задан
  • 621 просмотр
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день.
А вы js код откуда-то скопировали или как?
1) Сама идея возврата json из контроллера в таком виде - не очень. Вам необходимо вернуть dto. А jackson уже сам сериализует в json
@GetMapping("/json")
  public String getJSON2() {
    return "{ \"id\": 10, \"name\": \"Clementina DuBuque\", \"username\": \"Moriah.Stanton\","
        + " \"email\": \"Rey.Padberg@karina.biz\", "
        + "\"address\": { \"street\": \"Kattie Turnpike\", "
        + "\"suite\": \"Suite 198\", \"city\": \"Lebsackbury\", "
        + "\"zipcode\": \"31428-2261\", \"geo\": { \"lat\": "
        + "\"-38.2386\", \"lng\": \"57.2232\" } }";
  }


2) Как отметил коллега Dmitry Roo у вас то, что происходит в браузере и то что происходит в js коде - это разные вещи.
Вот, смотрите:
В коде ниже вы совершаете GET запрос на /api/json.
Во-первых, непонятно, что это: data: { command: "GetDriverInfo" },, а главное зачем и как она должна быть обработана контроллером.
Во-вторых, непонятно какой параметр вы хотите получить:
console.log(response.driverVer);, если такого параметра driveVer у вас нет в json.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы