#javascript #java #jquery #json #jsp
#javascript #java #jquery #json #jsp
Вопрос:
Проблема
Я отправляю массив из StarConroller.java на страницу Star.jsp с помощью model.AddAttribute
StarConroller.java
List<SBook> books = booksService.findAll();
model.addAttribute("books ", books);
Я хочу отправить этот массив книг в Star.js нажав кнопку «Показать книги» в Star.jsp
Star.jsp
<button type="button" onclick="show(`${books}`)">Show books</button>
Star.js
function show(books) {
console.log(books);
}
Когда я нажимаю кнопку «Показать книги», я получаю следующее в консоли
[SBook{SBookId=1, version=null, title='null', description='null'},
SBook{SBookId=2, version=null, title='null', description='null'},
SBookId{clauseId=3, version=null, title='null', description='null'}]
Проблема
Но мне нужен массив json
обновление 1
Класс SBook
public class SBook{
private Integer sBookId;
private Integer version;
private String title;
private String description;
public SBook() {
}
public SBook(Integer sBookId, Integer version, String title, String description) {
this.sBookId= sBookId;
this.version = version;
this.title = title;
this.description = description;
}
//Getter amp; Setters
@Override
public String toString() {
return "SBook{"
"sBookId=" sBookId
", version=" version
", title='" title '''
", description='" description '''
'}';
}
}
Комментарии:
1. Если вы можете удалить тексты sbookи sbookidиз результата ваших книг, вы можете легко использовать
JSON.stringify(books)
2. @OzgurSar куда я хочу добавить JSON.stringify(книги), не могли бы вы опубликовать его в качестве ответа?
3. Извините, я тоже не заметил
=
символов. Они также должны быть заменены и т.д. Я думаю, это можно сделать с помощью регулярного выражения4. @GayanSanjaya вам нужно скрыть объект
JSON
sbookв . поделитесь контроллером и кодом класса sbook’а.5. @GovindaSakhare хорошо
Ответ №1:
Вы добавляете список объектов в HTTP-ответ, механизм шаблонов HTTP преобразует его в строку, используя toString
метод объекта sbookобъекта. Преобразованная строка не является допустимым JSON.
Сначала вам нужно преобразовать список объектов в формат JSON, используя библиотеку синтаксического анализа (я использую библиотеку Jackson в приведенном ниже коде):
List<SBook> books = booksService.findAll();
ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(List.of(sBook));
model.addAttribute("books ", books);
Затем вам нужно проанализировать эту строку JSON обратно в объект javascript, используя JSON.parse
:
function show(books) {
let parsed = JSON.parse(books);
console.log(parsed);
}