首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JsonObject库迭代更多的javax.json

如何使用JsonObject库迭代更多的javax.json
EN

Stack Overflow用户
提问于 2020-12-03 14:35:34
回答 1查看 109关注 0票数 2

这是我的第一篇帖子,谢谢。

我使用javax.json库读取包含Json的导入file.txt。

案文如下:

代码语言:javascript
复制
    [{
            "role" : "role1",
            "db" : "db_admin",
            "flag" : false,
            "roles" : [
                    {
                            "role" : "role",
                            "db" : "db_admin"
                    }
            ],
            "inRoles" : [
                    {
                            "role" : "role",
                            "db" : "db_admin"
                    }
            ]
    },
    {
            "role" : "role2",
            "db" : "db_admin",
            "flag" : false,
            "roles" : [
                    {
                            "role" : "role",
                            "db" : "db_admin"
                    }
            ],
            "inRoles" : [
                    {
                            "role" : "role",
                            "db" : "db_admin"
                    }
            ]
    },
    {
            "role" : "role3",
            "db" : "db_admin",
            "flag" : false,
            "roles" : [
                    {
                            "role" : "role",
                            "db" : "db_admin"
                    }
            ],
            "inRoles" : [
                    {
                            "role" : "role",
                            "db" : "db_admin"
                    }
            ]
    }]

现在,我做了几次尝试,但我只读到了第一个对象。这是我阅读first JsonArray的代码:

代码语言:javascript
复制
//I read all line and put them into StringBuilder and then in a unique String
String json = sbJson.toString();
  JsonReader jsonreader = Json.createReader(new StringReader(json));
  // Get the JsonObject structure from JsonReader.
  JsonObject jsonobject = jsonreader.readObject();
  jsonreader.close();

  // read json array
  JsonArray jsonarray = jsonobject.getJsonArray("roles");
  JsonObject value = jsonarray.getJsonObject(0);
  String roles_role = value.getString("role");
  String roles_db = value.getString("db");


  jsonarray = jsonobject.getJsonArray("inRoles");
  value = jsonarray.getJsonObject(0);
  String inheritedRoles_role = value.getString("role");
  String inheritedRoles_db = value.getString("db");

所以我可以从第一个JsonObject中获得所有元素,但是我需要其他人,我已经尝试了更多的解决方案,但它们对我来说并不适用。

EN

回答 1

Stack Overflow用户

发布于 2020-12-05 18:55:27

您需要执行一个for循环来读取所有内容。这是你怎么做的

代码语言:javascript
复制
static String json = "[{\n"
            + "            \"role\" : \"role1\",\n"
            + "            \"db\" : \"db_admin\",\n"
            + "            \"flag\" : false,\n"
            + "            \"roles\" : [\n"
            + "                    {\n"
            + "                            \"role\" : \"role\",\n"
            + "                            \"db\" : \"db_admin\"\n"
            + "                    }\n"
            + "            ],\n"
            + "            \"inRoles\" : [\n"
            + "                    {\n"
            + "                            \"role\" : \"role\",\n"
            + "                            \"db\" : \"db_admin\"\n"
            + "                    }\n"
            + "            ]\n"
            + "    },\n"
            + "    {\n"
            + "            \"role\" : \"role2\",\n"
            + "            \"db\" : \"db_admin\",\n"
            + "            \"flag\" : false,\n"
            + "            \"roles\" : [\n"
            + "                    {\n"
            + "                            \"role\" : \"role\",\n"
            + "                            \"db\" : \"db_admin\"\n"
            + "                    }\n"
            + "            ],\n"
            + "            \"inRoles\" : [\n"
            + "                    {\n"
            + "                            \"role\" : \"role\",\n"
            + "                            \"db\" : \"db_admin\"\n"
            + "                    }\n"
            + "            ]\n"
            + "    },\n"
            + "    {\n"
            + "            \"role\" : \"role3\",\n"
            + "            \"db\" : \"db_admin\",\n"
            + "            \"flag\" : false,\n"
            + "            \"roles\" : [\n"
            + "                    {\n"
            + "                            \"role\" : \"role\",\n"
            + "                            \"db\" : \"db_admin\"\n"
            + "                    }\n"
            + "            ],\n"
            + "            \"inRoles\" : [\n"
            + "                    {\n"
            + "                            \"role\" : \"role\",\n"
            + "                            \"db\" : \"db_admin\"\n"
            + "                    }\n"
            + "            ]\n"
            + "    }]";

    public static void main(String[] args) throws Exception {
        JsonReader jsonreader = Json.createReader(new StringReader(json));
        // Get the JsonObject structure from JsonReader.
        JsonArray jsonArray = jsonreader.readArray();
        jsonreader.close();

        for(Object j :jsonArray.toArray()){
            System.out.println("j:"+ j);
        }
    }

在我的本地人看来就是这样

代码语言:javascript
复制
--- exec-maven-plugin:1.5.0:exec (default-cli) @ hackerrank ---
j:{"role":"role1","db":"db_admin","flag":false,"roles":[{"role":"role","db":"db_admin"}],"inRoles":[{"role":"role","db":"db_admin"}]}
j:{"role":"role2","db":"db_admin","flag":false,"roles":[{"role":"role","db":"db_admin"}],"inRoles":[{"role":"role","db":"db_admin"}]}
j:{"role":"role3","db":"db_admin","flag":false,"roles":[{"role":"role","db":"db_admin"}],"inRoles":[{"role":"role","db":"db_admin"}]}
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time:  0.979 s

如果我使用的是javax json,我在下面有一个mvn项目并使用了依赖项。

代码语言:javascript
复制
<dependency>
  <groupId>javax.json</groupId>
  <artifactId>javax.json-api</artifactId>
  <version>1.1.4</version>
  <type>jar</type>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.json</artifactId>
    <version>1.1.4</version>
</dependency>

此外,如果只想从数组中获取一个对象,则可以检查https://stackoverflow.com/a/8481439/175554

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65128035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档