Преобразование данных списка в Json с использованием классов пакета javax - PullRequest
0 голосов
/ 04 августа 2020

Я не могу использовать какие-либо сторонние библиотеки, поэтому упомянул в теме письма. эта строка генерирует исключение. obj.put("CanonicalName", data.getItemname());

У меня есть список EntityData type. EntityData - это POJO, который имеет 2 столбца с установщиком геттера и 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]]

, поэтому файл содержит itemname и operation(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, просьба помочь.

1 Ответ

1 голос
/ 04 августа 2020

Попробуйте создать новый JsonObject при добавлении в JsonArray и создайте объект root, чтобы добавить 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);
...