2012-06-23 4 views
10

나는`를 사용하여 플레이! Framework 2.0 및이 프레임 워크에서 새로 도입되었습니다. 어떻게 흰 html 페이지에서 내 모델의 json 표현을 반환 할 수 있습니까? 그것은 약간있는 처리기 사용하는 방법은 플레이 1.x에서에서입니다재생! 프레임 워크 반환 json 응답

답변

10

으로 단위를 반환하는 방법을 사용할 수 없습니다 :

내가하고 있어요 것은

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

이다 그러나 나는 오류 Play 2.0과 다릅니다. 문서에서, 여기에 JSON ObjectNode을 반환 return 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); 
    } 
} 

이의 중요한 부분을 응답하는 방법의 예입니다.

public static Finder<Long,Business> find = new Finder(Long.class, Business.class); 

이가 표시됩니다 : 나는 정적 변수를 가지고있는 Business.java 클래스에서

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 
} 

: return ok(Json.toJson(Moments.all());

+0

반환 유형으로 "색인"이란 무엇을 의미합니까? 컴파일러가 그것을 이해하지 못하는 것 같아요, @BodyParser 또한 오류 (형식 불일치)이 코드가 당신을 위해 작동합니까? 또는 수입품과보다 광범위한 사진을 보여줄 수 있습니까? – Stas

+1

@Stas, 소스 문서에 오타가 있었는데, Play 2.0 컨트롤러의 모든 액션으로 'Result'를 반환해야합니다. – biesior

+0

좋은 장소 @ 마커스. Github에 대한 문서를 업데이트 해 주셔서 감사합니다. – Codemwnci

37

로컬 호스트의 JSON 객체 : 9000/getBusinesses 경로를 추가하면

GET  /getBusinesses controllers.Application.getBusinesses() 
+4

문서에 표시된대로 json 객체를 수동으로 생성 할 필요없이 자동으로 전체 객체 그래프를 json으로 렌더링하므로 훨씬 더 유용한 대답입니다. – prule

+0

Jackson 주석을 통해 JSON 구조를 사용자 정의 할 수 있다고 생각합니다. – Sudhir

+0

클래스 참조 추가 : – Alex

2

에 대한 것은 목록에서 새 모델을 작성하는 방법