使用javax包类将列表数据转换为Json



我不能使用任何第三方库,所以我在主题行中提到了这一点。此行引发异常。obj.put("CanonicalName", data.getItemname());

我有一份EntityData type的清单。EntityData是POJO,它有两列,分别带有getter setter和toString。。

public class EntityData {
private JsonValue itemname; //I can change datatype to String if it helps to reolve issue
private String operation;
}

我的列表是List<EntityData> dataList= new ArrayList<EntityData>();,如果我打印sout(dataList(,那么下面是我的数据。它调用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]]

所以文件包含CCD_ 5和CCD_。我需要用下面的格式写列表数据。

{
"delete": [
{
"canonicalName": "TCS"
}
],
"update": [
{
"canonicalName": "Google India"
},
{
"canonicalName": "Amazon India"
}
],
"add": [
{
"canonicalName": "Apple Computers"
},
{
"canonicalName": "Infosys"
},
{
"canonicalName": "Wipro"
},
{
"canonicalName": "Capgemini"
},
{
"canonicalName": "Cognizant"
}
]
}

我在写下面的代码,但我得到了错误。

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);

它正在抛出异常以下

Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractMap.put(Unknown Source)
at com.shruti.jdbc.ReadData.main(ReadData.java:86)

我不知道该怎么办。我不能使用任何第三方图书馆。我只能使用oracle的java库。基本上我不知道如何创建JsonObject的对象并将数据插入其中。如果有其他可用的java库,请帮助。

在JsonArray中添加时尝试创建新的JsonObject,并创建一个根对象来添加3种类型的操作数据数组

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);

相关内容

  • 没有找到相关文章