2014-11-29 28 views
5

मैं अपनी व्यक्ति वस्तु को जेसन में क्यों नहीं बदल सकता?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

आपकी समस्या व्यक्ति वर्ग में फील्ड एक्सेस संशोधक से संबंधित है। दोनों फ़ील्ड निजी हैं इसलिए play.libs.Json.toJson उन तक नहीं पहुंच सकते हैं। आपको उपयुक्त गेटर विधियां प्रदान करनी होंगी या इन क्षेत्रों को सार्वजनिक बनाना होगा।

@Entity 
public class Person extends Model { 

    @Id 
    private Long id; 

    private String value; 

    public Long getId() { 
     return id; 
    } 

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

धन्यवाद यह काम कर रहा है! –

संबंधित मुद्दे