2013-06-28 4 views
0

Я хочу заполнить Java-класс внешним файлом JSon и работать с Gson Builder. Но мой класс Java не будет заполнен значением, которое я объявил в файле JSon. В чем проблема? Спасибо за помощь !Заполните класс Java с помощью GSon Builder и JSon File

Это мой Json Файл:

{ 
"tstamp": "2012-11-21 18:00", 
"id": 123, 
"publicationList": [ 
    { 
     "id": "1L", 
     "state": "PublicationState.IMMEDIATELY", 
     "channel": "PublicationChannel.TIMETABLE", 
     "startDate": "2001-12-17 18:00", 
     "endDate": "2001-12-17 18:00" 
    }, 
    { 
     "id": "2L", 
     "state": "PublicationState.IMMEDIATELY", 
     "channel": "PublicationChannel.NVS", 
     "startDate": "2001-12-17 18:00", 
     "endDate": "2001-12-17 18:00" 
    }, 
    { 
     "id": "3L", 
     "state": "PublicationState.IMMEDIATELY", 
     "channel": "PublicationChannel.NVS", 
     "startDate": "2001-12-17 18:00", 
     "endDate": "2001-12-17 18:00" 
    } 
] 
} 

Это мой Gson Builder и GSon Instance Создатель:

Gson gson = new GsonBuilder() 
      .setDateFormat("yyyy-MM-dd HH:mm") 
      .registerTypeAdapter(Publication.class, 
        new PublicationInstanceCreator()).create(); 

public class PublicationInstanceCreator implements 
    InstanceCreator<PublicationDto> { 

    @Override 
    public PublicationDto createInstance(Type type) { 

     return new PublicationDto(); 

    } 

} 

Это Java Класс PublicattionDto:

public class PublicationDto{ 

    private static final long serialVersionUID = 1L; 

    private Long id; 

    private PublicationState state = PublicationState.IMMEDIATELY; 

    private PublicationChannel channel; 

    private Date startDate; 

    private Date endDate; 


    //getter and setter methods 

} 

ответ

0

Что такое ваша ошибка? Основной объект POJO также отсутствует в вашем коде.

Предполагая, что этот объект является Publications, вы должны использовать только

Publications p = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm").create().fromJson(json, Publications.class); 

Ваш адаптер не будет работать. Плюс я думаю, что идентификаторы с «L» тоже не сработают (отбросьте L), GSon вернет номер в правильный длинный тип.