Как преобразовать вложенный Json в карту на java

#java #json #list #hashmap

#Ява #json #Список #хэш-карта

Вопрос:

Я пытаюсь прочитать вложенный json и преобразовать его в карту. Я могу анализировать 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 Listlt;TableNamesgt; tableNames; //Getters and Setters }  public class TableNames {   private String tableName;  private Listlt;Stringgt; keys; //Getters and Setters }  

Комментарии:

1. В чем проблема?

2. @shmosel Я пытаюсь получить списокlt;Картаlt;Строка, объектgt;, но не могу добавить имя таблицы и ключи к этой карте.

3. Вы хотите иметь карту со всеми ключами и именами таблиц, которые существуют в файле json, или что?

Ответ №1:

Давайте попробуем это с помощью простого 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());  }  }  }  

Библиотека:

 lt;!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple --gt;  lt;dependencygt;  lt;groupIdgt;com.googlecode.json-simplelt;/groupIdgt;  lt;artifactIdgt;json-simplelt;/artifactIdgt;  lt;versiongt;1.1.1lt;/versiongt;  lt;/dependencygt;