Играть! Framework ответ возвращение JSON
Я использую Play! Framework 2.0, и я новичок в этой области. Как я могу вернуть только json-представление моей модели на белой странице html?
Что я делаю, это
public static void messagesJSON(){
List<Message> messages = Message.all();
renderJSON(messages);
}
Но я получаю ошибку: не могу использовать метод, возвращающий Unit в качестве обработчика
Ответы
Ответ 1
Используемый вами метод - от Play 1.x, он немного отличается в Play 2.0. В документации приведен пример ответа на запрос sayHello
JSON
@BodyParser.Of(Json.class)
public static Result sayHello() {
ObjectNode result = Json.newObject();
String name = json.findPath("name").getTextValue();
if(name == null) {
result.put("status", "KO");
result.put("message", "Missing parameter [name]");
return badRequest(result);
} else {
result.put("status", "OK");
result.put("message", "Hello " + name);
return ok(result);
}
}
Важная часть этого из того, что вы спрашиваете, это return ok(result)
, который возвращает JSON ObjectNode
.
Ответ 2
Как насчет
return ok(Json.toJson(Moments.all());
Ответ 3
Создайте новую модель из списка:
public static Result getBusinesses(){
List<Business> businesses = new Model.Finder(String.class, Business.class).all();
return ok(Json.toJson(businesses)); //displays JSON object on empty page
}
В классе Business.java у меня есть статическая переменная:
public static Finder<Long,Business> find = new Finder(Long.class, Business.class);
Это отобразит объект JSON на localhost: 9000/getBusinesses
после добавления маршрута:
GET /getBusinesses controllers.Application.getBusinesses()