2014-10-06 76 views
0

我有一个JSON,我想使用Autobean解析。我得到的NullPointerException在for循环中,可能persons.getPersons()使用Autobean解析JSON数组

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":[…]}}:外部对象是一个PersonsWrapperpersons属性是IPersons,其persons属性是List<IPerson>

尝试开沟PersonsWrapper,只是使用IPersons代替:

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

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