2015-01-08 3 views
0

У меня есть класс со следующими атрибутамиGSON десериализации массивов объектов

public class JenkinsServer 
{ 
    private String       url; 

    private String       mode; 
    private String       nodeName; 
    private String       nodeDescription; 
    private String       description; 

    private boolean       useSecurity; 
    private boolean       quietingDown; 

    private JenkinsServerView    primaryView; 

    private List<JenkinsJob>  jobs; 
    private List<JenkinsServerView> views; 
} 

Теперь я хочу GSON десериализовать/отобразить JSon документ к нему. Он работает хорошо, за исключением моих списков - они пустые. Документ JSON выглядит следующим образом (фрагмент):

"jobs": [ 
{ 
    "name": "AnotherJob", 
    "url": "https://build.example.com/jenkins/job/AnotherJob/", 
    "color": "disabled" 
}, 
{ 
    "name": "AnotherJob2", 
    "url": "https://build.example.com/jenkins/job/Build%20CI%20Build/", 
    "color": "blue" 
}, 

"views": [ 
    { 
     "name": "-All Views", 
     "url": "https://build.example.com/jenkins/view/-All%Views/" 
    }, 
    { 
     "name": "Alle", 
     "url": "https://build.example.com/jenkins/" 
    }, 

отображение работает, даже для одного экземпляра

JenkinsServerView primaryView

но не для списков. Я начинаю картографирование следующим образом:

Gson gson = gsonBuilder.create(); 
JenkinsServer server = gson.fromJson(reader, JenkinsServer.class); 
+0

Любые исключения? – ashokramcse

+0

@ashokramcse Нет, только пустые списки (ArrayList). – 4Kings

+0

Это явно означает, что ваш JSON не прав, когда вы сериализуете его в класс JenkinsServer. – ferhan

ответ

0

выглядит, что ваши данные json, которые вы пытаетесь выполнить, недействительны.

В заданиях JSON и просмотров массивы и оба из них не имеет закрывающей фигурной скобки в конце.

Допустимый JSON будет выглядеть следующим образом: (Обратите внимание на скобки закрытия в конце массива)

{ 
    "jobs": [ 
     { 
      "name": "AnotherJob", 
      "url": "https://build.example.com/jenkins/job/AnotherJob/", 
      "color": "disabled" 
     }, 
     { 
      "name": "AnotherJob2", 
      "url": "https://build.example.com/jenkins/job/Build%20CI%20Build/", 
      "color": "blue" 
     } 
    ], 
    "views": [ 
     { 
      "name": "-All Views", 
      "url": "https://build.example.com/jenkins/view/-All%Views/" 
     }, 
     { 
      "name": "Alle", 
      "url": "https://build.example.com/jenkins/" 
     } 
    ] 
}