2014-10-06 3 views
0

У меня есть JSON, который я бы проанализировал с помощью Autobean. Я получаю NullPointerException в течение цикла, вероятно, persons.getPersons()Разбор массива JSON с использованием Autobean

AppAutoBeanFactory factory = GWT.create(AppAutoBeanFactory.class); 
    AutoBean<PersonsWrapper> bean =AutoBeanCodex.decode(factory, PersonsWrapper.class, "{\"persons\": " + strResponse + "}"); 
    IPersons persons = bean.as().getPersons(); 


     for (IPerson person : persons.getPersons()) { 
      ... 
     } 

мой AppAutoBeanFactory выглядит следующим образом:

interface AppAutoBeanFactory extends AutoBeanFactory { 

    AutoBean<IPerson> person(); 
    AutoBean<IPersons> ipersons(); 
    AutoBean<PersonsWrapper> persons(); 


} 

JSON (переменная strResponse) выглядит следующим образом:

[ 
    { 
    "name":"John", 
    "surname":"Blue", 
    "records":[10.5, 12.5, 18.6] 
    }, 
    { 
    "name":"Steven", 
    "surname":"Green", 
    "records":[11.5, 15.5, 14.6] 
    } 
] 

Я сделал следующие интерфейсы:

public interface PersonsWrapper { 
IPersons getPersons(); 
} 

public interface IPersons { 

    void setPersons(List<IPerson> persons); 
    List<IPerson> getPersons(); 

} 

public interface IPerson { 

    String getName(); 
    void setName(String name); 
    String getSurname(); 
    void setSurname(String surname); 
} 

Как я могу заставить его работать? И как добавить массив записей в IPerson?

ответ

0

, как вы сделали это, вы ожидали JSON иметь {"persons:{"persons":[…]}}: внешний объект является PersonsWrapper которого persons свойство является IPersons, чье persons свойство является List<IPerson>.

Try канав PersonsWrapper и только с помощью IPersons вместо:

IPersons bean =AutoBeanCodex.decode(factory, IPersons.class, "{\"persons\": " + strResponse + "}").as(); 

for (IPerson person : bean.getPersons()) { 
    ... 
} 
Смежные вопросы