gpt4 book ai didi

java - Android - JSON 解析未使用 "setText"显示数据

转载 作者:行者123 更新时间:2023-12-02 10:49:25 25 4
gpt4 key购买 nike

我有以下 JSON 信息。

{
"version": 2,
"locations": [{
"id": "750",
"geo": {
"name": "Lord Howe Island",
"state": "Lord Howe Island",
"country": {
"id": "au",
"name": "Australia"
},
"latitude": -31.557,
"longitude": 159.086
},
"astronomy": {
"objects": [{
"name": "moon",
"days": [{
"date": "2018-09-05",
"events": [],
"moonphase": "waningcrescent"
}]
}]
}
}]
}

我想要做的是将 JSON 中的一些详细信息(不是全部)打印到 textView,所以我想要的输出如下:

名称:豪勋爵岛国家: 澳大利亚月相:亏弦月

但是,在解析要在 textView 中打印的信息时,我没有任何运气。我目前正在使用以下代码:

JSONArray JA = new JSONArray(data);
for (int i = 0; i < JA.length(); i++) {
JSONObject JO = (JSONObject) JA.get(i);
JSONObject geo = JO.getJSONObject("geo");
JSONObject astronomy = JO.getJSONObject("astronomy");
singleParsed = "Name:" + geo.get("name") + "\n" +
"Latitude:" + JO.get("latitude") + "\n" +
"Longitude:" + JO.get("longitude") + "\n" +
"Phase: " + astronomy.get("moonphase") + "\n";
}

然后使用以下内容显示数据:

protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);

MainActivity.fetcheddata.setText(this.singleParsed);


}
}

我只需使用即可打印所有数据

MainActivity.fetcheddata.setText(this.data);

但是,我也看到了 textView 和所有信息中的标签,而不是我后面的几个标签。

我做错了什么?

非常感谢所有帮助

编辑:这是建议的,目前正在处理中。

JSONArray JA = new JSONArray(data);
for (int i = 0; i < JA.length(); i++) {
JSONObject JO = (JSONObject) JA.get(i);
JSONObject astronomy = JO.getJSONObject("astronomy");
JSONArray objects = astronomy.getJSONArray("objects");
JSONArray days = objects.getJSONObject(0).getJSONArray("days");
Object moonphase = days.getJSONObject(0).get("moonphase");

moon = "Name:" + days.get(Integer.parseInt("moonphase"));
}

最佳答案

您遇到的问题是您尝试使用 JSONObjects,即使位置是一个数组,对象也是如此。

为此,您需要像这样迭代数组:

    JSONObject jo = new JSONObject(yourData);
JSONArray locations = jo.getJSONArray("locations");

for (int i = 0; i < locations.length(); ++i) {
//iterate over each key, etc.
}

在我看来,归根结底,这将是一团糟,如果您更改 key 、添加 key 等,维护起来会很痛苦。我建议研究类似 GSON 的东西,然后只创建 View 模型您想要的数据。最后你会得到这样的结果:

List<T> yourObjects = gson.fromJson(jsonReader, X[].class);

然后您就可以单独访问您想要的任何属性(property)。

关于java - Android - JSON 解析未使用 "setText"显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52286022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com