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

Действие по маршруту:

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

Спасибо, что работает! –

Смежные вопросы