【问题标题】:How to convert nested Json to Map in java如何在java中将嵌套的Json转换为Map
【发布时间】:2022-01-16 04:12:43
【问题描述】:

我正在尝试读取嵌套的 json 并将其转换为 Map。我能够将 json 解析为 java 对象,但无法从这些 java 对象转换为映射。

下面是json

"sources": [
    {
      "database": {
        "dbConnectionId": "TestDBConnectionId",
        "tableNames": [
          {
            "tableName": "TestTableName011",
            "keys": ["column010, column011"]
          },
          {
            "tableName": "TestTableName012",
            "keys": ["column020, column021"]
          }
        ]
      }
    }
  ]

Created Java object as follows:- 

public class Sources {
    private Database database;
//Getters and Setters
}

public class Database {

    private String dbConnectionId;
    private List<TableNames> tableNames;
//Getters and Setters
}

public class TableNames {

    private String tableName;
    private List<String> keys;
//Getters and Setters
}

【问题讨论】:

  • 有什么问题?
  • @shmosel 我正在尝试获取 List 但无法将 tableName 和 Keys 添加到该地图中。
  • 您想要一个包含 json 文件中存在的所有键和 tableNames 的映射还是什么?

标签: java json list hashmap


【解决方案1】:

让我们使用 Simple Json (org.json.simple) 来尝试一下。

    public static void main(String[] args) throws Exception {
        // Read from json file. 
        Object obj = new JSONParser().parse(new FileReader("test.json"));

        // You may remove the [] first from data, then prase json object.
        JSONObject jo = (JSONObject) obj;
        //System.out.println(jo);
        //System.out.println(jo.get("database"));

        // Get database object.
        JSONObject jodb = (JSONObject) jo.get("database");
        //System.out.println(jodb.get("dbConnectionId"));
        //System.out.println(jodb.get("tableNames"));

        // Get tableNames array from database object.
        JSONArray ja = (JSONArray) jodb.get("tableNames");
        //System.out.println(ja);
        Iterator itrJa = ja.iterator();
        while (itrJa.hasNext()) {
            //System.out.println(itrJa.next());

            // Prase nested database object inside tableNames array.
            JSONObject dbObj = (JSONObject) itrJa.next();
            System.out.println(dbObj);

            // Get tableName from database object
            System.out.println(dbObj.get("tableName"));

            // Get keys array from database object
            JSONArray keys = (JSONArray) dbObj.get("keys");
            //System.out.println(keys);
            Iterator itrKeys = keys.iterator();
            while (itrKeys.hasNext()) {
                // Get key strings.
                String keyStr = itrKeys.next().toString();
                String[] keyArr = keyStr.split(",");
                System.out.println(keyArr[0].trim());
                System.out.println(keyArr[1].trim());
            }
        }
    }

图书馆:

    <!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1.1</version>
    </dependency>

【讨论】:

    猜你喜欢
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    相关资源
    最近更新 更多