Android:在解析时保存Hashmap时出现问题

时间:2015-02-26 18:16:39

标签: android parse-platform

我在Parse上保存HashMap然后检索它时遇到了问题。 下面是将数据放入ParseObject的代码。

HashMap<Object, Object> eventInfo = new HashMap<>();
eventInfo.put(ParseTable.Column.AllDay, allday);
JSONArray dateSet = new JSONArray();
JSONObject sdObj = new JSONObject();
sdObj.put("__type", "String");
sdObj.put("iso", sdf.format(sdate));
JSONObject edObj = new JSONObject();
edObj.put("__type", "String");
edObj.put("iso", sdf.format(rEnd.getTime()));
dateSet.put(sdObj);
dateSet.put(edObj);

eventInfo.put(ParseTable.Column.DateSet, dateSet);
eventInfo.put(ParseTable.Column.EventType, eType.getText().toString());
eventInfo.put(ParseTable.Column.Location, loc.getText().toString());
eventInfo.put(ParseTable.Column.Points, points.getText().toString());
obj.put(ParseTable.Column.EventInfo, eventInfo);

现在,当我从我设置它的同一个对象获取此数据时,它是正确的。

{eventType=Default, location=, allDay=false, dateSet=[{"__type":"String","iso":"2015-02-25T21:18:00Z"},{"__type":"String","iso":"2015-02-28T00:00:00Z"}], points=} 

这也可以在服务器上正确保存:

{"allDay":false,"dateSet":[{"__type":"String","iso":"2015-02-25T21:18:00Z"},{"__type":"String","iso":"2015-02-28T00:00:00Z"}],"eventType":"Default","location":"","points":""}

但是当我从Parse服务器检索相同的数据时,当我记录HashMap时,这就是它返回的内容:

{eventType=Default, location=, allDay=false, dateSet=[null, null], points=}

不知道为什么会这样。

1 个答案:

答案 0 :(得分:0)

您获得空白字段的原因是您在空白/空getMap对象上调用event

Map<String, Object> oinfo = event.getMap(ParseTable.Column.EventInfo);

我无法看到您的event对象来自哪里,但我也没有看到您已将任何此类数据保存到数据库中。

因此请确保obj已保存:

obj.saveInBackground()

然后,您可以在查询后获取eventInfo

ParseQuery q = ParseQuery.getQuery("YourClass");
        q.whereEqualTo("someColumnName", "someValue");
        q.findInBackground(new FindCallback() {
            @Override
            public void done(List objects, ParseException paramParseException) {
                for (Object o: objects){
                    Map<String, Object> oinfo = o.getMap(ParseTable.Column.EventInfo);
                }
            }
        });

如果您实际上已将obj保存到数据库并且只尝试从已填充的event对象中获取数据,那么请使用您正在采取的每一步来更新您的问题服务器。我希望看到event对象的整个生命周期。