如何从API调用存储JSON数据

时间:2011-05-09 17:57:00

标签: java android json parsing gson

我是一名新手程序员,所以请随意评论那些没有意义的事情,以便我可以学习。

我正在开发一个咖啡店搜索器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会适合这个吗?任何专业提示将不胜感激。

感谢。

2 个答案:

答案 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数据,到目前为止,还需要了解更多关于应用程序的信息。