为了账号安全,请及时绑定邮箱和手机立即绑定

如何检索具有键值的整个 JSON 对象?

如何检索具有键值的整个 JSON 对象?

UYOU 2022-09-21 17:32:12

当然已经有人问过了,但我无法为我的情况搜索解决方案。


我有两个文件 :和 。第一个只有每个测验的标题和ID,第二个具有每个测验所需的所有数据。JSONquizzes.jsonquizzesQuestions.json


quizzes.json:


 [

      {

        "_id": "1",

        "title": "blabla"

      },

      {

        "_id": "2",

        "title": "blabla2"

      },

      {

        "_id": "3",

        "title": "blabla3"

      },

      {

        "_id": "4",

        "title": "blabla4"

      }

 ]

和:quizzesQuestions.json


[

    {

        "quizId": "1",

        "questions": [

            {

                "questionId": "1",

                "translations": [

                    {

                        "lang": "fr",

                        "label": "Quelle est la reponse ?",

                        "answers": [

                            "reponse 1",

                            "reponse 2",

                            "reponse 3",

                            "reponse 4"

                        ],

                        "trueAnswer": "reponse 1 2 3 or 4",

                        "explanation": "parce que..."

                    },

                


我需要从文件中检索一个对象(现在,它将成为将来的数据库),该文件等于特定的id。这里只有一个 id 为 的测验。JSON1


我已经能够从第一个文件中检索每个测验,并将它们显示在列表中。现在我希望能够仅检索与用户单击的测验具有相同ID的测验,但我不知道如何继续。Gson



查看完整描述

1 回答

?
慕娘9325324

TA贡献1434条经验 获得超4个赞

您可以直接从 反序列化。另外,您不需要使用 来读取 .尝试使用 直接解析数据:JSONInputStreamorg.jsonJSONGson


private Map<String, Quizzes> loadQuizzes(InputStream jsonInputStream) throws IOException {

    Gson gson = new GsonBuilder().create();

    Type quizzesType = new TypeToken<List<Quizzes>>() {}.getType();


    try (InputStreamReader reader = new InputStreamReader(jsonInputStream, StandardCharsets.UTF_8)) {

        List<Quizzes> quizzes = gson.fromJson(reader, quizzesType);


        return quizzes

                .stream()

                .collect(Collectors.toMap(Quizzes::getQuizId, q -> q));

    }

}

现在,您可以从 中查找对象。QuizzesMapid


查看完整回答
反对 回复 5天前

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信