Here are some JSON helper functions that have served me well for some of my java projects. /** * Generic JSON writer * * @param filePath - file path of the new JSON file * @param key - string identifier for a piece of data * @param value - data associated with a specific key * @throws JSONException * @throws IOException */ public static JSONObject generateJsonObject(String filePath, String key, Object value) throws JSONException, IOException { JSONObject jsonObject = new JSONObject(); // create file if it does not exist if (!exists(filePath)) { // add data to json object jsonObject.put(key, value); // save json object to disk saveJsonObject(jsonObject, filePath); } else { // read existing file JSONObject existingJsonObject.put(key, value); // save json object to disk saveJsonObject(existingJsonObject, filePath); } return jsonObject; } /** * Does the file path exist * * @param filePath - file path of a file */ public static boolean exists(String filePath) { File file = new File(filePath); return file.exists(); } /** * Generic JSON reader * * @param filePath - file path of JSON file * @throws JSONException * @throws IOException */ public static JSONObject readJsonObject(String filePath) throws JSONException, IOException { JSONObject jsonObject = null; // read JSON as string String jsonString = new String(Files.readAllBytes(Paths.get(filePath).normalize()), "UTF-8"); // parse into a JSON object jsonObject = new JSONObject(jsonString); return jsonObject; } /** * Basic JSON writer * * @param jsonObject - JSON object * @param filePath - file path of JSON file * @throws JSONException * @throws IOException */ public static JSONObject generateJsonObject2(JSONObject jsonObject, String filePath) throws JSONException, IOException { FileWriter fileWriter = null; try { // open a FileWriter(filePath) fileWriter = new FileWriter(filePath); // write to file FileWriter.write(jsonObject.toString(4)); // flush the buffer to ensure the data is written fileWriter.flush(); // close the writer fileWriter.close(); } catch (IOException e) { logger.error(e); } finally { // close the file if (fileWriter != null) { try { fileWriter.close(); } catch (IOException e) { logger.error(e); } } } }