Java 如何从API调用存储JSON数据

Java 如何从API调用存储JSON数据,java,android,json,parsing,gson,Java,Android,Json,Parsing,Gson,我是一个新手程序员,所以请随意评论一些毫无意义的东西,这样我就可以学习了 我正在开发一款咖啡店搜索器android应用程序,它可以调用API获取每个感兴趣的地方。我很难想出一种方法来存储返回的JSON数据,这种方法可以用于我的目的。我需要对数据做两件事:首先,我需要一个MapOverlay类来访问它,这样我就可以为每个咖啡店画标记(我可以接受);其次,我需要在列表视图中显示数据 API调用: /** Queries SimpleGeo with current location **/

我是一个新手程序员,所以请随意评论一些毫无意义的东西,这样我就可以学习了

我正在开发一款咖啡店搜索器android应用程序,它可以调用API获取每个感兴趣的地方。我很难想出一种方法来存储返回的JSON数据,这种方法可以用于我的目的。我需要对数据做两件事:首先,我需要一个MapOverlay类来访问它,这样我就可以为每个咖啡店画标记(我可以接受);其次,我需要在列表视图中显示数据

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");
    }
}
private void parseJSONData()抛出JSONException{
对于(int i=0;i
我目前正在尝试使用教程中概述的GSON从数据中创建java对象。SQLite适合这样做吗?任何专业提示都将不胜感激


谢谢。

假设您正在使用android,您可以使用谷歌地图视图

查看,com.google.android.maps.MapView

和列表视图

我看不出SQLite在这里有多合适,除非您计划在应用程序重启时存储位置。
您所需要做的就是从JSON中提取位置信息,并对这些数据执行任何操作。

假设您正在使用android,您可以使用google地图视图

查看,com.google.android.maps.MapView

和列表视图

我看不出SQLite在这里有多合适,除非您计划在应用程序重启时存储位置。
你所需要做的就是从JSON中提取位置信息,然后对这些数据做任何你想做的事情。

我意识到答案已经被接受了,但无论如何,我还是要把我的2个比特扔进去

为了“避免不必要的API调用”,可能不需要将响应JSON持久化(保存在SQLite或文本文件中)。需要更多关于应用程序的信息来确定这一点

抄袭我朋友让我校对的一篇博文:

在某些情况下,GSON使从JSON创建Java对象变得非常简单,尽管许多示例(尤其是博客文章中的示例)都非常琐碎或不必要地复杂,通常只不过是GSON文档中的复制粘贴示例(名称已更改),这是问题的核心——文档在其示例中不是很全面,它们很快使复杂对象看起来很难映射。 但我离题了

如果问题是不知道如何使用JSON和/或GSON,这并不意味着解决方案涉及SQLite或文本文件持久性或任何类型的持久性

关于原始问题中的代码,它似乎假设响应JSON中的对象将以某种特定顺序出现。根据我的经验,这通常不是一个安全的假设。有时候itemX排在第一位,有时候它排在第三位。(这当然取决于生成响应的系统。)因此,解析结果时要考虑JSON对象的顺序


关于是否持久保存JSON数据,同样,到目前为止,需要更多地了解应用程序,而不是解释的内容。

我意识到答案已经被接受了,但无论如何,我要把我的2个比特抛进去

为了“避免不必要的API调用”,可能不需要将响应JSON持久化(保存在SQLite或文本文件中)。需要更多关于应用程序的信息来确定这一点

抄袭我朋友让我校对的一篇博文:

在某些情况下,GSON使从JSON创建Java对象变得非常简单,尽管许多示例(尤其是博客文章中的示例)都非常琐碎或不必要地复杂,通常只不过是GSON文档中的复制粘贴示例(名称已更改),这是问题的核心——文档在其示例中不是很全面,它们很快使复杂对象看起来很难映射。 但我离题了

如果问题是不知道如何使用JSON和/或GSON,这并不意味着解决方案涉及SQLite或文本文件持久性或任何类型的持久性

关于原始问题中的代码,它似乎假设响应JSON中的对象将以某种特定顺序出现。根据我的经验,这通常不是一个安全的假设。有时候itemX排在第一位,有时候它排在第三位。(这当然取决于生成响应的系统。)因此,解析结果时要考虑JSON对象的顺序


关于是否持久保存JSON数据,同样,需要知道的关于应用程序的更多信息,而不是到目前为止解释的内容。

感谢您的回复。我已经设置了地图视图和列表视图。列表视图当前指向一个虚拟数组,映射正在运行。主要问题是,我不确定处理JSON数据的最佳方法。如果不清楚,很抱歉。您必须详细说明“处理json”的含义。是否要将其存储在磁盘上?从JSON中提取信息是否有问题?等等…我确实希望存储信息,以便避免不必要的API调用。这就是为什么我认为SQLite可能适合这种情况。我试图使用gson将信息提取到一个java对象中,然后我可以用它来绘制一个地图覆盖图,并创建一个数组,我可以在列表视图中显示它。我应该问的是,从android开发的角度来看,这种方法有意义吗?你能预见这种技术会有什么问题吗?这些问题可能看起来微不足道,因为我从未尝试过使用这些方法中的任何一种。我认为,将JSON数据存储在文本文件中,或者如果确实需要,存储在SQLite中是一种非常标准的做法。我没有使用过GSON,它看起来是一个有用的库,如果