2011-01-13 12 views
28

Jak utworzyć obiekt Json za pomocą Google Gson? Poniższy kod tworzy obiekt json, który wygląda jak {"name":"john"}Tworzenie obiektu GSON

JsonObject jsonObject = new JsonObject(); 
jsonObject.addProperty("name", "john"); 

Jak mogę utworzyć obiekt JSON jak ten?

{"publisher":{"name":"john"}} 
+0

Czy mówisz o [Gson] (http://code.google.com/p/google-gson/)? –

+0

tak. Zabieram o Gson. – Raunak

+0

Czy zmienić tytuł? –

Odpowiedz

14

Dowiedziono, jak zrobić to poprawnie, używając obiektów Java.

Creator creator = new Creator("John"); 
new Gson().toJson(creator); 

Implementacja klasy Javy Creatora.

public class Creator { 

    protected String name; 

    protected HashMap<String, String> publisher = new HashMap<String, String>(); 

    public Creator(String name){ 
      publisher.put("name", name); 
    } 
} 
+0

Aby dodać trochę elastyczności, radziłbym używać interfejsu Map zamiast bezpośrednio za pomocą implementacji HashMap. – Davio

+4

Jaki jest cel pola nazwy? To nigdy nie jest ustawione. –

59
JsonObject innerObject = new JsonObject(); 
innerObject.addProperty("name", "john"); 

JsonObject jsonObject = new JsonObject(); 
jsonObject.add("publisher", innerObject); 

http://www.javadoc.io/doc/com.google.code.gson/gson


Po prostu FYI: Gson zrobione jest do konwersji obiektów Javy do/od JSON. Jeśli to jest główny sposób, w jaki używasz Gsona, myślę, że brakuje ci sensu.

+0

Hmmh. Dzięki; nie jestem pewien, czy jest to drobny błąd w narzędziu formatowania komentarzy SO ... w każdym razie, aby pozbyć się nawiasów, link: http://cowtowncoder.com/blog/archives/2009/01/entry_131.html – StaxMan

+0

oh Ok. Myślałem, że możesz użyć Gsona na wszystko. Dzięki za informację. – Raunak

+1

@Raunak: jasne, możesz go użyć do tego - ale jak powiedziałem, brakuje ci sensu. Zacznij od obiektów Java. –