2012-06-23 70 views
10

我使用Play! Framework 2.0和我在這個框架中是新的。我怎樣才能返回我的模型的JSON表示在白色的HTML頁面?玩!框架返回json響應

我在做什麼是

public static void messagesJSON(){ 
    List<Message> messages = Message.all(); 
    renderJSON(messages); 
} 

,但我得到錯誤:無法使用返回單位爲處理器

回答

10

您所使用的方法是從播放1.x的一種方法,它稍Play 2.0中有所不同。從文檔,這裏是如何從你所問的是,它返回一個JSON ObjectNodereturn ok(result)回覆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); 
    } 
} 

這樣做的重要組成部分,一個例子。

+0

這是什麼意思「索引」作爲返回類型?在我看來,編譯器不明白它,@BodyParser也錯誤(類型不匹配)這個代碼適合你嗎?或者你能否顯示進口和更多更廣泛的可供參考的情況。 – Stas

+1

@Stas,源文檔中存在拼寫錯誤,它應該在Play 2.0控制器中返回'Result'作爲每個'action'。 – biesior

+0

好點@馬庫斯。並感謝您更新Github上的文檔。 – Codemwnci

37

如何 return ok(Json.toJson(Moments.all());

+4

這是一個非常有用的答案,因爲它會自動將整個對象圖呈現爲json - 而不是像文檔中所示的那樣手動構建json對象。 – prule

+0

我相信你也可以通過Jackson註釋來定製JSON結構。 – Sudhir

+0

添加類參考: – Alex

2

創建一個從您的列表中的新型號:

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); 

這將顯示添加路由後,在localhost上的JSON對象:9000/getBusinesses :

GET  /getBusinesses controllers.Application.getBusinesses()