我在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=}
不知道为什么会这样。
答案 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
对象的整个生命周期。