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

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

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

UYOU 2022-09-21 17:32:12
当然已经有人问过了,但我无法为我的情况搜索解决方案。我有两个文件 :和 。第一个只有每个测验的标题和ID,第二个具有每个测验所需的所有数据。JSONquizzes.jsonquizzesQuestions.jsonquizzes.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贡献1783条经验 获得超5个赞

您可以直接从 反序列化。另外,您不需要使用 来读取 .尝试使用 直接解析数据: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


查看完整回答
反对 回复 2022-09-21
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号