From 778490b8d8a8bb4d5745d02fb48039feeef349a0 Mon Sep 17 00:00:00 2001 From: marhali Date: Thu, 3 Feb 2022 20:30:50 +0100 Subject: [PATCH] add basic support for non-primitive elements inside json arrays Resolves #81 --- CHANGELOG.md | 1 + .../io/parser/json/JsonArrayMapper.java | 23 +++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd87015..cc27491 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ ### Added - Modularization supports namespace or locale module - Full namespace / locale module support for all file types +- Support for object and array elements inside json arrays ### Changed - Improve exception handling on IO operations diff --git a/src/main/java/de/marhali/easyi18n/io/parser/json/JsonArrayMapper.java b/src/main/java/de/marhali/easyi18n/io/parser/json/JsonArrayMapper.java index 8da48be..13477fc 100644 --- a/src/main/java/de/marhali/easyi18n/io/parser/json/JsonArrayMapper.java +++ b/src/main/java/de/marhali/easyi18n/io/parser/json/JsonArrayMapper.java @@ -1,7 +1,7 @@ package de.marhali.easyi18n.io.parser.json; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; +import com.google.gson.*; + import de.marhali.easyi18n.io.parser.ArrayMapper; /** @@ -9,13 +9,28 @@ import de.marhali.easyi18n.io.parser.ArrayMapper; * @author marhali */ public class JsonArrayMapper extends ArrayMapper { + + private static final Gson GSON = new GsonBuilder().create(); + public static String read(JsonArray array) { - return read(array.iterator(), JsonElement::getAsString); + return read(array.iterator(), (jsonElement -> jsonElement.isJsonArray() || jsonElement.isJsonObject() + ? jsonElement.toString() + : jsonElement.getAsString())); } public static JsonArray write(String concat) { JsonArray array = new JsonArray(); - write(concat, array::add); + + write(concat, (element) -> { + if(element.startsWith("{") && element.endsWith("}")) { + array.add(GSON.fromJson(element, JsonObject.class)); + } else if (element.startsWith("[") && element.endsWith("]")) { + array.add(GSON.fromJson(element, JsonArray.class)); + } else { + array.add(element); + } + }); + return array; } } \ No newline at end of file