package com.xceptance.neodymium.module.statement.testdata.util; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.Charset; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.stream.JsonReader; public class JsonFileReader { public static List<Map<String, String>> readFile(InputStream inputStream) { List<Map<String, String>> data = new LinkedList<>(); try { BufferedInputStream bufferedStream = new BufferedInputStream(inputStream); InputStreamReader streamReader = new InputStreamReader(new BufferedInputStream(bufferedStream), Charset.forName("UTF-8")); JsonReader jsonReader = new JsonReader(streamReader); JsonArray asJsonArray = new JsonParser().parse(jsonReader).getAsJsonArray(); for (int i = 0; i < asJsonArray.size(); i++) { JsonObject dataSet = asJsonArray.get(i).getAsJsonObject(); Map<String, String> newDataSet = new HashMap<>(); for (Entry<String, JsonElement> entry : dataSet.entrySet()) { JsonElement element = entry.getValue(); if (element.isJsonNull()) { newDataSet.put(entry.getKey(), null); } else if (element.isJsonArray() || element.isJsonObject()) { newDataSet.put(entry.getKey(), element.toString()); } else { newDataSet.put(entry.getKey(), element.getAsString()); } } data.add(newDataSet); } jsonReader.close(); streamReader.close(); bufferedStream.close(); return data; } catch (Exception e) { throw new RuntimeException(e); } } public static List<Map<String, String>> readFile(File file) { try { return readFile(new FileInputStream(file)); } catch (FileNotFoundException e) { throw new RuntimeException(e); } } }