2015-07-20 5 views
1

Как создать javabean для gson для приведенного ниже сценария JSON?Создание сложных объектов json с использованием gson

{ 
    "header": [ 
     { 
      "title": { 
       "attempts": 3, 
       "required": true 
      } 
     }, 
     { 
      "on": { 
       "next": "abcd", 
       "event": "continue" 
      } 
     }, 
     { 
      "on": { 
       "next": "", 
       "event": "break" 
      } 
     } 
    ] 
} 

Я пытаюсь построить javabean для этого выхода JSON. Я не могу повторить имя поля on.

Пожалуйста, предложите любые решения.

+0

Хорошо, что ваш вопрос? –

+0

Я хочу построить вышеупомянутый скрипт json через gson. Для этого я не могу создать java bean – Martin

+0

Я получаю ошибку несколько полей с именем «no» – Martin

ответ

1

Для этого вам понадобится несколько классов. Я сделал несколько предположений, с именованием, но это должно быть достаточно:

public class Response { 
    private List<Entry> header; 

    private class Entry { 
     private Title title; 
     private On on; 
    } 

    private class Title { 
     int attempts; 
     boolean required; 
    } 

    private class On { 
     String next, event; 
    } 
} 

Вы можете проверить это с помощью метода main() как:

public static void main(String[] args) { 
    // The JSON from your post 
    String json = "{\"header\":[{\"title\":{\"attempts\":3,\"required\":true}},{\"on\":{\"next\":\"abcd\",\"event\":\"continue\"}},{\"on\":{\"next\":\"\",\"event\":\"break\"}}]}"; 

    Gson gson = new GsonBuilder().setPrettyPrinting().create(); 
    Response response = gson.fromJson(json, Response.class); 

    System.out.println(response.header.get(0).title.attempts); // 3 
    System.out.println(response.header.get(1).on.next); // abcd 
    System.out.println(gson.toJson(response)); // Produces the exact same JSON as the original 
} 
+0

Это работает как шарм. – Martin

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