在Android中对Json输出进行排序

Posted

技术标签:

【中文标题】在Android中对Json输出进行排序【英文标题】:Sorting Json output in Android 【发布时间】:2020-03-23 09:49:15 【问题描述】:

我在 php 中创建了一个 web_service,它输出基于 mysql 查询的 JSON。当由我的 android 应用程序调用时,该服务将数据返回到应用程序,并将其转换为 JSONObject。 一切都按预期进行,因为我在 PHP 服务器端对数据进行了排序,而 Android 应用程序将数据保持在相同的顺序。

但是当我在较低的 APIS(果冻豆)上测试应用程序时。我看到第一个记录是底部,第二个是第一。我调试了那部分代码并看到了这个:

但是当我在较新的 API(牛轧糖)上调试相同的部分时,我发现:

我想知道这是否是一个错误,或者我应该在我的 android 应用程序上更改我的 java 代码。我认为对结果进行排序的最佳方法是在服务器端而不是应用端进行。

这里是读取网络服务结果的代码:

 if (resultado_json[1].compareTo(URLSECCIONES) == 0) 
                JSONObject json = new JSONObject(resultado_json[0]);
                //Log.i("hola3", resultadofin);
                orquestador.procesarResultados(json);
            

【问题讨论】:

【参考方案1】:

我建议您在此数据中添加某种 id,这样排序总是很简单。

如果使用 php,只需遍历所有内容并添加一个可排序的 id,或者至少是一个日期。

由于您不提供后端代码,因此很难说出您在做什么,但在 Java 中,如果您想进行反向排序,您可以这样做。

JSONArray array = response.getJSONArray("records");
    for (int i = array.length()-1; i >= 0; i--)  //you are moving backwards, notice the i-- in the loop 

如果您发布您的 PHP 代码,我也可以提供帮助。

【讨论】:

我选择根据 id 对输出进行排序并使用“Comparable”接口。

以上是关于在Android中对Json输出进行排序的主要内容,如果未能解决你的问题,请参考以下文章

在 Javascript 中对 JSON 对象进行排序

Jackson 在 Android 上按字母顺序对 JSON 序列化输出键进行排序

通过 PHP 将 Sql 数据库转换为具有正确格式的 JSON,并在 PHP 脚本本身中对值进行排序

在 JavaScript 中对 JSON 进行排序

在 Flutter 中对 JSON 列表进行排序 [重复]

SwiftUI - 在 SwiftUI 中对显示的 JSON 文件进行排序,分节或排序