2013-06-28 4 views
11

Mam metodę klasy modelu, która zwraca listę obiektów, która zawiera wszystkie zarejestrowane dane użytkownika. Chcę pobrać listę przywróconą przez metodę all() i przekonwertować dane na obiekt JSON i przekazać go do widoku w postaci ciągu. Jak mogę wykonać tę konwersję tej listy tablicowej na obiekt JSON?Konwersja listy tablic do łańcucha obiektów Json

nie udało mi się to zrobić poniżej:

ObjectMapper mapper = new ObjectMapper(); 
JSONObject json = new JSONObject(); 
JsonNodeFactory jsonnode = JsonNodeFactory.instance; 
ObjectNode result = new ObjectNode(jsonnode); 
for (int i = 0; i < list.size(); i++) { 
    json.put(list.get(i).fname, list.get(i)); 
    System.out.println(json.get("fname")); 
} 

@Entity 
class Mydata extends Model { 

    @Id 
    public Long Id; 
    public String fname; 
    public String lname; 
    public String city; 
    public String state; 
    /****************** READ/select OPERATION *****************/ 
    public static Finder < Long, Mydata > finder = new Finder(Long.class, Mydata.class); 

    public static List <Mydata> all() { 
     return finder.all(); 
    } 
    public static void createuser(Mydata user) { 
     user.save(); 
    } 
} 
+0

Poczekaj czekać; mieszkasz tutaj Jacksona i org.json! – fge

+0

Możliwe duplikat http://stackoverflow.com/questions/5813434/trouble-with-gson-serializing-an-arraylist-of-pojos –

+0

[konwersji listy macierzowym obiektu ciąg JSON] [1] [1]: http://stackoverflow.com/questions/4841952/convert-arraylistmycustomclass-to-jsonarray/30193029#30193029 –

Odpowiedz

1

Nie przejmuj się org.json użyć Jackson całą drogę:

// list is a List<MyData> 
final ObjectMapper mapper = new ObjectMapper(); 
final Map<String, MyData> map = new HashMap<>(); 
for (final MyData data: list) 
    map.put(data.fname, data); 
final JsonNode json = mapper.valueToTree(map); 
18

do konwertowania ArrayList do formatu JSON, wystarczy pobrać open Source narzędzie json od: pliku http://json.org/java/ lub słoik z here

i po prostu zrobić:

JSONArray jsonAraay = new JSONArray(your_array_list); 

To wszystko

Uwaga: Należy mieć Ustawiacz/getter w swojej klasie POJO/MODEL przekonwertować ArrayList do JSON

0

Można wykorzystać wszystkie rodzaje bibliotek zewnętrznych jak inni tutaj sugerują, lub po prostu użyj do tego własnych uproszczonych metod (znalezionych w play.libs.Json), które działają z obiektami Jacksona, ale są zintegrowane ze strukturą i wymagają o wiele mniej kodu do użycia, na przykład:

JsonNode myJsonNode = Json.toJson(MyListObject);, który konwertuje Listę na Obiekt JsonNode, a następnie użyj czegoś takiego, jak String jsonResult = Json.stringify(myJsonNode);, aby przekształcić go w reprezentację tekstową.

Jeśli używasz JSON w szablonie, nie zapomnij go zawinąć w coś takiego jak @Html(myJsonString), aby niczego nie umknął. W przeciwnym razie, jeśli po prostu wypiszesz czysty JSON do przeglądarki, prosty return ok(jsonResult); zadziała, ponieważ Play automatycznie ustawi typ zawartości.

LINK: http://www.playframework.com/documentation/api/2.0/java/play/libs/Json.html

+0

Hi Netizen, próbuję przekazać dane z metody java (w postaci łańcucha tablicy json) na mój widok. Zasadniczo szukam funkcji "JAVA", aby przekonwertować listę List do Json Object Array .... – pret

+0

To, co napisałem, powinno zrobić to dla ciebie - konwertuje obiekt Java List do łańcucha JSON, który jest następnie interpretowany w twój szablon przez interpreter JavaScript jako tablicę JSON (o ile nie uniknąłeś niczego, co pokazałem). Możesz umieścić wynikowe dane JSON bezpośrednio w szablonie lub utworzyć interfejs API AJAX, aby podać go jako czysty tekst, tak jak pokazano powyżej.Tak czy inaczej, to, co umieściłem powyżej, powinno zadziałać, jeśli rozumiem, co masz na myśli. Dzięki. –