ciao!
dovrei mettere su una pagina web i risultati provenienti da un web service in formato json.
come libreria ho usato gson visto che già la conoscevo.
nel controller ho fatto così:
codice:
@Controller
public class HomeController {
@RequestMapping(value = "/index", method = RequestMethod.GET)
public String home(Locale locale, Model model) throws MalformedURLException, IOException {
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate);
ArrayList<ArrayList<String>> tabella = new ArrayList<>();
Gson gson = new Gson();
JsonParser parser = new JsonParser();
try (BufferedReader bf = new BufferedReader(new InputStreamReader(new URL(".............").openStream()))) {
JsonArray jarray = parser.parse(new JsonReader(bf)).getAsJsonArray();
for (JsonElement e : jarray) {
Book book = gson.fromJson(e, Book.class);
ArrayList<String> list = new ArrayList<>();
list.add(String.valueOf(book.id));
list.add(book.title);
list.add(book.author);
list.add(book.editor);
list.add(String.valueOf(book.price));
list.add(book.isbn);
list.add(book.note);
tabella.add(list);
}
}
model.addAttribute("books", tabella);
return "home";
}
}
e poi nella pagina:
codice:
<c:if test="${not empty books}">
<ul>
<c:forEach var="book" items="${books}">
<li>${book}</li>
</c:forEach>
</ul>
</c:if>
come vedete però si tratta di un ArrayList<ArrayList<String>> e quindi nella pagina vedo i risultati così:
codice:
- [87, 2001 odissea nello spazio, arthur c. clarke, longanesi, 0.0, , ]
- [86, 2010 odissea due, arthur c. clarke, rizzoli, 0.0, , ]
come faccio a suddividere ulteriormente la stringa per vedere, ad esempio, solo titolo e autore??