java - 循环遍历 json 并按 id 选择随机对象 - Android/JAVA

标签 java android json loops random

所以我有一个 json 文件,其中大约有 350 个对象。我提供了一个示例,如下所示:

"type": "success",
  "value": [
    {
      "id": 1,
      "joke": "Joke 1 - Text",
      "categories": [
        "explicit"
      ]
    },
    {
      "id": 2,
      "joke": "Joke 2 - Text.",
      "categories": [

      ]
    },
    {
      "id": 3,
      "joke": "Joke 3 - Text",
      "categories": [

      ]
    },

到目前为止,我已经能够得到第一个笑话,但我使用的 json 只有一个笑话。现在我想循环遍历所有内容并获得 2 个随机笑话。我见过人们使用 json 数组进行循环的示例,但它对我不起作用,因为我的 json 文件结构不同。这就是我获得第一个对象的方式:

String finalJson = buffer.toString();

            JSONObject parentObject = new JSONObject((finalJson));

            JSONObject finalObj = parentObject.getJSONObject("value");


            String jokes = finalObj.getString("joke");
            int id = finalObj.getInt("id");


            return id + " " + jokes;

就像我之前说的,我想循环遍历每个对象,然后选择 2 个随机 id 并得到笑话。我不知道这是否是最好的方法,但我的想法是有一个 Random r ,其最大值为 350,最小值为 1,然后根据 id 通过 id 选择笑话对象随机编号

最佳答案

value 不是一个 JSONObject,而是一个 JSONArray,这应该会给你两个随机的笑话

String finalJson = buffer.toString();

JSONObject parentObject = new JSONObject((finalJson));

//JSONObject finalObj = parentObject.getJSONObject("value");
JSONArray jokeArray = parentObject.getJSONArray("value");

Random r = new Random();
String joke1 = jokeArray.getJSONObject(r.nextInt(jokeArray.length())).getString("joke");
String joke2 = jokeArray.getJSONObject(r.nextInt(jokeArray.length())).getString("joke");

这还取决于 ids 始终从 1 开始并每次递增 1 的事实

编辑

要也显示 ID,请进一步分割...

String finalJson = buffer.toString();

JSONObject parentObject = new JSONObject((finalJson));

//JSONObject finalObj = parentObject.getJSONObject("value");
JSONArray jokeArray = parentObject.getJSONArray("value");

Random r = new Random();
int id1 = r.nextInt(jokeArray.length())
String joke1 = jokeArray.getJSONObject(id1).getString("joke");

int id2 = r.nextInt(jokeArray.length())
String joke2 = jokeArray.getJSONObject(id1).getString("joke");

String joke1WithID = id1 + "  " + joke1
String joke2WithID = id2 + "  " + joke2

关于java - 循环遍历 json 并按 id 选择随机对象 - Android/JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36115165/

相关文章:

java - Jpa 条件计数

java - 如何检查文本文件中域的实例数

java - Android 提高 SQLite 性能优化

android - android中的音频歌曲混合器以编程方式

javascript - 如何使用 lodash 创建嵌套过滤器

java - 使用 Java 正则表达式进行单词提取和拆分

android - 如何通过将 FFMPEG lib 用于 android 来减小 mp4 大小

打开 DatePickerDialog 时出现 android 致命异常 : java. lang.NullPointerException

json - 从 API 解码 JSON - Swift 5

java - 我怎样才能让 jackson 不把我的类(class)当作 map ?