I can not use any third party library so I have mentioned in subject line.
this line throwing exception. obj.put("CanonicalName", data.getItemname());
I have a list which is of EntityData type
. EntityData
is POJO which has 2 columns with getter setter and toString..
public class EntityData {
private JsonValue itemname; //I can change datatype to String if it helps to reolve issue
private String operation;
}
my list is List<EntityData> dataList= new ArrayList<EntityData>();
if I print sout(dataList) then below is my data. it calls toString.
[EntityData [itemname="Apple Computers", operation=add], EntityData [itemname="Infosys", operation=add], EntityData [itemname="Wipro", operation=add], EntityData [itemname="Google India", operation=update], EntityData [itemname="Amazon India", operation=update], EntityData [itemname="Capgemini", operation=add], EntityData [itemname="Cognizant", operation=add], EntityData [itemname="Cognizant", operation=delete]]
so file contains itemname
and operation(add,delete,update)
. I need to write list data in below format.
{
"delete": [
{
"canonicalName": "TCS"
}
],
"update": [
{
"canonicalName": "Google India"
},
{
"canonicalName": "Amazon India"
}
],
"add": [
{
"canonicalName": "Apple Computers"
},
{
"canonicalName": "Infosys"
},
{
"canonicalName": "Wipro"
},
{
"canonicalName": "Capgemini"
},
{
"canonicalName": "Cognizant"
}
]
}
I was writing below code but i am getting error.
JsonObject obj = JsonObject.EMPTY_JSON_OBJECT;
JsonArray delete= JsonArray.EMPTY_JSON_ARRAY;
JsonArray modify= JsonArray.EMPTY_JSON_ARRAY;
JsonArray add= JsonArray.EMPTY_JSON_ARRAY;
for(EntityData data:dataList)
{
switch(data.getOperation())
{
case "delete":
obj.put("CanonicalName", data.getItemname() );
delete.add(obj);
break;
case "update":
obj.put("CanonicalName", data.getItemname() );
modify.add(obj);
break;
case "add":
obj.put("CanonicalName", data.getItemname() );
add.add(obj);
break;
default:
break;
}
}
System.out.println(obj);
It is throwing below exception
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractMap.put(Unknown Source)
at com.shruti.jdbc.ReadData.main(ReadData.java:86)
. I dont know how to handle it. I can not use any third party library. I have to use java libraries of oracle only. basically I dont know how to create object of JsonObject and insert data into it. If any other java library available pleas help.
Try to create new JsonObject when adding in JsonArray and create a root object to add 3 type of operation data array
JsonArray delete= JsonArray.EMPTY_JSON_ARRAY;
JsonArray modify= JsonArray.EMPTY_JSON_ARRAY;
JsonArray add= JsonArray.EMPTY_JSON_ARRAY;
for(EntityData data:dataList)
{
switch(data.getOperation())
{
case "delete":
JsonObject obj1 = JsonObject.EMPTY_JSON_OBJECT;
obj1.put("CanonicalName", data.getItemname() );
delete.add(obj1);
break;
case "update":
JsonObject obj2 = JsonObject.EMPTY_JSON_OBJECT;
obj2.put("CanonicalName", data.getItemname() );
modify.add(obj2);
break;
case "add":
JsonObject obj3 = JsonObject.EMPTY_JSON_OBJECT;
obj3.put("CanonicalName", data.getItemname() );
add.add(obj3);
break;
default:
break;
}
}
JsonObject rootObj = JsonObject.EMPTY_JSON_OBJECT;
rootObj.put("delete", delete);
rootObj.put("update", modify);
rootObj.put("add", add);