package jason; import java.io.StringReader; import java.io.StringWriter; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import jakarta.json.Json; import jakarta.json.JsonArray; import jakarta.json.JsonArrayBuilder; import jakarta.json.JsonObject; import jakarta.json.JsonObjectBuilder; import jakarta.json.JsonReader; import jakarta.json.JsonValue; import jakarta.json.JsonWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintWriter; import java.util.Scanner; public class JsonSupplier { /** * Creates a JsonObject by traversing the arrayList of LinkedHashMap * * @param suppliers ArrayList of LinkedHashMap. Each element of the * arrayList is a row of suppliers table. The key of the LinkedHashMap is * the attribute name and the value of the attribute Example ( One liked * hash map is one row from the table) LinkedHashMap 1 : key: snumber, * value: s1 key: sname, value: white key: status, value: 20 key: city, * value London LinkedHashMap 2 : key: snumber, value: s2 key: sname, value: * black key: status, value: 30 key: city, value Paris The value of the map * @return JsonObject */ public static JsonObject createJsonObjectForSuppliers(ArrayList< LinkedHashMap> suppliers) { JsonObjectBuilder jsonBuilder = Json.createObjectBuilder(); int counter = 1; for (LinkedHashMap supplier : suppliers) { // create an array of key-value pairs JsonArrayBuilder arraySupplierBld = Json.createArrayBuilder(); // create each key-value pair as seperate object and add it to the array Set> entrySet = supplier.entrySet(); for (Map.Entry entry : entrySet) { arraySupplierBld.add(Json.createObjectBuilder().add(entry.getKey(), entry.getValue()).build()); } // add supplier-array to object String objectID = "+" + (counter++); jsonBuilder.add(objectID, arraySupplierBld); } JsonObject allSuppliersJsonObject = jsonBuilder.build(); return allSuppliersJsonObject; } /** * Creates a JsonObject by reading the String data in JSON format * * @param jsonData Json format data * @return JsonObject */ public static JsonObject createJsonObjectFromString(String jsonData) { JsonReader jsonReader = Json.createReader(new StringReader(jsonData)); JsonObject o = jsonReader.readObject(); return o; } /** * Creates a LinkedHashMap of 4 ENTRYies.Keys name: snumber, sname, status * and city. Values of map are the parameters. * * @param snumber value of map * @param sname value of map * @param status value of map * @param city value of map * @return */ public static LinkedHashMap createMapOfSupplier( String snumber, String sname, String status, String city ) { LinkedHashMap mapSupplier = new LinkedHashMap(); mapSupplier.put("snumber", snumber); mapSupplier.put("sname", sname); mapSupplier.put("status", status); mapSupplier.put("city", city); return mapSupplier; } public static String getSuppliersJsonObject(){ ArrayList< LinkedHashMap> suppliers = new ArrayList(); for (int i = 1; i <= 2; ++i) { LinkedHashMap oneSupplierRowOfTable = createMapOfSupplier( "s1" + i, "Johnson" + i, Integer.toString(20 + i), "london" + i); suppliers.add(oneSupplierRowOfTable); } JsonObject j = createJsonObjectForSuppliers(suppliers); return j.toString(); } public static void main(String a[]) { ArrayList< LinkedHashMap> suppliers = new ArrayList<>(); for (int i = 1; i <= 2; ++i) { LinkedHashMap oneSupplierRowOfTable = createMapOfSupplier( "s1" + i, "Johnson" + i, Integer.toString(20 + i), "london" + i); suppliers.add(oneSupplierRowOfTable); } JsonObject j = createJsonObjectForSuppliers(suppliers); StringWriter strWtr = new StringWriter(); JsonWriter jsonWtr = Json.createWriter(strWtr); jsonWtr.writeObject(j); String s = strWtr.toString(); System.out.println(s); jsonWtr.close(); /* JSONobj.readJASONdataUsingParser(strWtr.toString()); JsonObject o = createJsonObjectFromString(strWtr.toString()); System.out.println("------------------------------------------------"); JSONobj.writeObjectModelToStream(o); */ } public static void writeJsonToTextFile(JsonObject jo) throws FileNotFoundException { String jsonString = Jason.getJsonString(jo); PrintWriter output = new PrintWriter(new FileOutputStream("jason.json", true)); output.print(jsonString); output.close(); } public static JsonObject readFileIntoJson(String fileName) throws FileNotFoundException { File file = new java.io.File(fileName); Scanner input = new Scanner(file); String joString = ""; while (!input.hasNext()) { joString += input.next(); } input.close(); JsonObject jo = createJsonObjectFromString(joString); return jo; } }