2014-11-29 3 views
5

Person 객체를 Json으로 변환 할 수없는 이유는 무엇입니까?play.libs.Json.toJson이 빈 객체를 반환하는 이유는 무엇입니까?

내 인 모델 :

@Entity 
public class Person extends Model { 

    @Id 
    private Long id; 

    private String value; 
} 

제어기 방법

import com.fasterxml.jackson.databind.JsonNode; 
import models.Person; 
import play.Logger; 
import play.db.ebean.Model; 
import play.mvc.Controller; 
import play.mvc.Result; 
import views.html.index; 

import java.util.List; 

import static play.data.Form.form; 
import static play.libs.Json.toJson; 

... 

public static Result getJsonPersons() { 
    List<Person> persons = new Model.Finder(Long.class, Person.class).all(); 
    JsonNode jsonNode = toJson(persons); 
    Logger.debug("JSON > "+jsonNode.toString()); 
    return ok(jsonNode); 
} 

액션을 제공

[{},{},{},{},{}] 
,745 : 컨트롤러 메소드에 의해 리턴

GET /persons  controllers.Application.getJsonPersons() 

얻어진 JSON

+0

'toJson' 및'JsonNode'에서 가져 오기를 표시합니다. 또한 재생 버전을 추가하십시오. – Salem

+0

질문에 추가했습니다. –

답변

7

문제는 Person 클래스의 필드 액세스 한정자와 관련이 있습니다. 두 필드 모두 비공개이므로 play.libs.Json.toJson은 액세스 할 수 없습니다. 적절한 getter 메소드를 제공하거나이 필드를 공개해야합니다.

@Entity 
public class Person extends Model { 

    @Id 
    private Long id; 

    private String value; 

    public Long getId() { 
     return id; 
    } 

    public String getValue() { 
     return value; 
    } 
} 
+0

고마워요! –

관련 문제