0

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

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?

4

1 回答 1

0

按照您的操作方式,您期望 JSON 具有{"persons:{"persons":[…]}}:外部对象是 a PersonsWrapper,其persons属性是 a IPersons,其persons属性是 a List<IPerson>

尝试放弃PersonsWrapperIPersons改用:

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

for (IPerson person : bean.getPersons()) {
    ...
}
于 2014-10-06T14:35:49.497 回答