我是一名新手程序员,所以请随意评论那些没有意义的事情,以便我可以学习。
我正在开发一个咖啡店搜索器Android应用程序,可以调用SimpleGeo API来获取每个感兴趣的地方。我无法想出以我可以用于我的目的的方式存储返回的JSON数据的方法。我需要对数据做两件事:首先,我需要一个地图覆盖类才能访问它,这样我就可以为每个咖啡店绘制标记(我很好);第二,我需要在列表视图中显示数据。
API调用:
/** Queries SimpleGeo with current location **/
private void getJSONData() {
SimpleGeoPlacesClient client = SimpleGeoPlacesClient.getInstance();
client.getHttpClient().setToken(oauth_key, oauth_secret);
double radius = 25;
try {
client.search(lat, lng, "coffee", null, radius,
new FeatureCollectionCallback() {
public void onSuccess(FeatureCollection collection) {
try {
features = collection.toJSON();
} catch (JSONException e) {
System.out.println(e.getMessage());
}
}
public void onError(String errorMessage) {
System.out.println(errorMessage);
}
});
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
解析数据:
private void parseJSONData() throws JSONException {
for (int i = 0; i < features.length(); i++) {
JSONObject feature = features.getJSONObject(i).getJSONObject(
"feature");
}
}
我目前正在尝试使用this教程中概述的GSON从数据中创建java对象。 SQLite会适合这个吗?任何专业提示将不胜感激。
感谢。
答案 0 :(得分:0)
假设您正在使用Android,您可以使用谷歌地图视图
视图,com.google.android.maps.MapView http://developer.android.com/resources/tutorials/views/hello-mapview.html
和ListView http://developer.android.com/reference/android/widget/ListView.html
我不知道SQLite如何适应这里,除非你打算在app重启之间存储这些地方。 您需要做的就是从JSON中提取位置信息,并根据该数据执行任何操作。
答案 1 :(得分:0)
我意识到答案已经被接受了,但无论如何我都把我的2位丢了......
可能不是需要持久化响应JSON(在SQLite或文本文件中),以“避免不必要的API调用”。有关应用程序的更多信息将需要确定。
从博客文章中复制我的朋友让我校对:
在某些情况下,GSON使得从JSON创建Java对象非常简单,尽管许多示例(特别是博客文章中的那些示例)都是琐碎或不必要的复杂,通常只是复制粘贴示例(带有名称)来自GSON文档,这是问题的核心 - 文档在他们的示例中并不是非常彻底,并且它们很快使得复杂对象看起来很复杂。
但我离题了......
如果问题是人们不知道如何使用JSON和/或GSON,这并不意味着该解决方案涉及SQLite或文本文件持久性或任何类型的持久性。
关于原始问题中的代码,看起来它假设响应JSON中的对象将以某种特定顺序出现。根据我的经验,这通常不是一个安全的假设。有时itemX排在第一位,有时排在第三位。 (这当然取决于生成响应的系统。)因此,解析结果允许JSON对象的顺序发生变化。
关于是否持久保存JSON数据,到目前为止,还需要了解更多关于应用程序的信息。