#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;