Appengine Cloud Endpoints:获取模型对象方法的NPE

时间:2013-11-15 19:51:22

标签: google-app-engine google-cloud-endpoints

我正在使用Cloud Endpoints从appengine检索数据到android。使用生成的库我检索对象列表。这似乎工作正常,如果我记录对象,我看到了json。但是如果我在对象上使用getX(),我会得到一个NPE。 Java GAE 1.8.7。在活动中的AsycTask中执行此操作。

        Builder builder = new Builder(AndroidHttp.newCompatibleTransport(),
                new GsonFactory(), null);
        MyObjectOperations service = builder.build().myobject();
        MyObjectCollection tmp = null;

        GetMyObjects it = service.getMyObjects();
        tmp = it.execute();
        listOfMyObjects = tmp.getItems();

        MyObject test=listOfMyObjects.get(0);
        test.getMyField();     //NPE here - on every field

这会导致什么? listOfMyObjects的大小正确。我之前使用过这个客户端库并且它有效。现在它是一个更新版本。任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

如果您的listOfMyObjects不是ArrayList<>或其他Iterable的实例,则get(0)将返回null,因为列表未编入索引。因此,即使列表中有n个项目,它也没有特定的第n个项目,因为它们没有被订购。

像这样创建ArrayList

listOfMyObjects = new ArrayList<myObject>(tmp.getItems());

然后get(0)应该有用。