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

Converting list data into Json using javax package classes

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

我有一个 EntityData type 的列表。 EntityData 是 POJO,它有 2 列 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]]

所以文件包含 itemnameoperation(add,delete,update)。我需要按以下格式编写列表数据。

    {
      "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)
        

。我不知道如何处理它。我不能使用任何第三方库。我只能使用 java 个 oracle 库。基本上我不知道如何创建 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);