diff --git a/json-modules/json-conversion/src/main/java/com/baeldung/jsonobjecttojsonarray/GsonConverter.java b/json-modules/json-conversion/src/main/java/com/baeldung/jsonobjecttojsonarray/GsonConverter.java new file mode 100644 index 000000000000..e7cde49605c3 --- /dev/null +++ b/json-modules/json-conversion/src/main/java/com/baeldung/jsonobjecttojsonarray/GsonConverter.java @@ -0,0 +1,19 @@ +package com.baeldung.jsonobjecttojsonarray; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import org.json.JSONObject; + +public class GsonConverter { + + JsonArray convertToKeyValueArray(JSONObject jsonObject) { + JsonArray result = new JsonArray(); + jsonObject.keySet().forEach(key -> { + JsonObject entry = new JsonObject(); + entry.addProperty("key", key); + entry.add("value", com.google.gson.JsonParser.parseString(jsonObject.get(key).toString())); + result.add(entry); + }); + return result; + } +} diff --git a/json-modules/json-conversion/src/main/java/com/baeldung/jsonobjecttojsonarray/JacksonConverter.java b/json-modules/json-conversion/src/main/java/com/baeldung/jsonobjecttojsonarray/JacksonConverter.java new file mode 100644 index 000000000000..39d8022e22ba --- /dev/null +++ b/json-modules/json-conversion/src/main/java/com/baeldung/jsonobjecttojsonarray/JacksonConverter.java @@ -0,0 +1,25 @@ +package com.baeldung.jsonobjecttojsonarray; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import org.json.JSONObject; + +public class JacksonConverter { + + ArrayNode convertToArray(JSONObject jsonObject) { + ObjectMapper mapper = new ObjectMapper(); + JsonNode jsonNode = mapper.convertValue(jsonObject.toMap(), JsonNode.class); + + ArrayNode result = mapper.createArrayNode(); + jsonNode.fields().forEachRemaining(entry -> { + ObjectNode obj = mapper.createObjectNode(); + obj.put("key", entry.getKey()); + obj.set("value", entry.getValue()); + result.add(obj); + }); + + return result; + } +} diff --git a/json-modules/json-conversion/src/main/java/com/baeldung/jsonobjecttojsonarray/OrgJsonConverter.java b/json-modules/json-conversion/src/main/java/com/baeldung/jsonobjecttojsonarray/OrgJsonConverter.java new file mode 100644 index 000000000000..f6c18b69e1b2 --- /dev/null +++ b/json-modules/json-conversion/src/main/java/com/baeldung/jsonobjecttojsonarray/OrgJsonConverter.java @@ -0,0 +1,22 @@ +package com.baeldung.jsonobjecttojsonarray; + +import org.json.JSONArray; +import org.json.JSONObject; + +public class OrgJsonConverter { + + JSONArray convertValuesToArray(JSONObject jsonObject) { + return new JSONArray(jsonObject.toMap().values()); + } + + JSONArray convertToEntryArray(JSONObject jsonObject) { + JSONArray result = new JSONArray(); + for (String key : jsonObject.keySet()) { + JSONObject entry = new JSONObject(); + entry.put("key", key); + entry.put("value", jsonObject.get(key)); + result.put(entry); + } + return result; + } +} \ No newline at end of file diff --git a/json-modules/json-conversion/src/test/java/com/baeldung/jsonobjecttojsonarray/GsonConverterTest.java b/json-modules/json-conversion/src/test/java/com/baeldung/jsonobjecttojsonarray/GsonConverterTest.java new file mode 100644 index 000000000000..4788668d43ac --- /dev/null +++ b/json-modules/json-conversion/src/test/java/com/baeldung/jsonobjecttojsonarray/GsonConverterTest.java @@ -0,0 +1,25 @@ +package com.baeldung.jsonobjecttojsonarray; + +import com.google.gson.JsonArray; +import org.json.JSONObject; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +class GsonConverterTest { + + @Test + void givenJSONObject_whenConvertToKeyValueArray_thenJsonArrayWithObjects() { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("brand", "Tesla"); + jsonObject.put("year", 2024); + + GsonConverter converter = new GsonConverter(); + System.out.println("before :"+jsonObject); + JsonArray result = converter.convertToKeyValueArray(jsonObject); + + System.out.println("here :"+result); + + assertEquals(2, result.size()); + assertEquals("year", result.get(0).getAsJsonObject().get("key").getAsString()); + } +} diff --git a/json-modules/json-conversion/src/test/java/com/baeldung/jsonobjecttojsonarray/JacksonConverterTest.java b/json-modules/json-conversion/src/test/java/com/baeldung/jsonobjecttojsonarray/JacksonConverterTest.java new file mode 100644 index 000000000000..f7e2c4a725ea --- /dev/null +++ b/json-modules/json-conversion/src/test/java/com/baeldung/jsonobjecttojsonarray/JacksonConverterTest.java @@ -0,0 +1,22 @@ +package com.baeldung.jsonobjecttojsonarray; + +import org.json.JSONObject; +import com.fasterxml.jackson.databind.node.ArrayNode; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +class JacksonConverterTest { + + @Test + void givenJSONObject_whenConvertToArray_thenArrayNodeOfKeyValueObjects() { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("country", "India"); + jsonObject.put("code", "IN"); + + JacksonConverter converter = new JacksonConverter(); + ArrayNode result = converter.convertToArray(jsonObject); + + assertEquals(2, result.size()); + assertEquals("country", result.get(0).get("key").asText()); + } +} diff --git a/json-modules/json-conversion/src/test/java/com/baeldung/jsonobjecttojsonarray/OrgJsonConverterTest.java b/json-modules/json-conversion/src/test/java/com/baeldung/jsonobjecttojsonarray/OrgJsonConverterTest.java new file mode 100644 index 000000000000..ee9acf6e7611 --- /dev/null +++ b/json-modules/json-conversion/src/test/java/com/baeldung/jsonobjecttojsonarray/OrgJsonConverterTest.java @@ -0,0 +1,35 @@ +package com.baeldung.jsonobjecttojsonarray; + +import org.json.JSONObject; +import org.json.JSONArray; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + +public class OrgJsonConverterTest { + + @Test + void givenFlatJSONObject_whenConvertValues_thenJSONArrayOfValues() { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("id", 1); + jsonObject.put("name", "Alice"); + + OrgJsonConverter converter = new OrgJsonConverter(); + JSONArray result = converter.convertValuesToArray(jsonObject); + + assertEquals(2, result.length()); + assertTrue(result.toList().contains("Alice")); + } + + @Test + void givenFlatJSONObject_whenConvertToEntryArray_thenJSONArrayOfObjects() { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("language", "Java"); + jsonObject.put("framework", "Spring"); + + OrgJsonConverter converter = new OrgJsonConverter(); + JSONArray result = converter.convertToEntryArray(jsonObject); + + assertEquals(2, result.length()); + assertEquals("framework", result.getJSONObject(0).get("key")); + } +}