Исключение при вставке данных в JsonObject - PullRequest
1 голос
/ 05 августа 2020

Я пытаюсь вставить данные в JsonObject. Но я получаю исключение.

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() );
                System.out.println("Inside delete1");
                delete.add(obj1);
                System.out.println("Inside delete2");
                break;
                
            case "update":
                JsonObject obj2 = JsonObject.EMPTY_JSON_OBJECT; 
                obj2.put("CanonicalName", data.getItemname() );
                System.out.println("Inside update1");
                modify.add(obj2);
                System.out.println("Inside update2");
                break;
                
            case "add":
                JsonObject obj3 = JsonObject.EMPTY_JSON_OBJECT; 
                System.out.println("Inside add1 "+data.getItemname());
                obj3.put("CanonicalName", data.getItemname());
                add.add(obj3);
                break;
                
            default:
                break;
            }
        }

Я создал 3 объекта JsonObject для вставки в него данных. Но он выбрасывает исключение ниже.

java.lang.UnsupportedOperationException
    at java.util.AbstractMap.put(Unknown Source)
    at com.shruti.jdbc.ReadData.main(ReadData.java:96)

obj2.put("CanonicalName", data.getItemname()); эти строки в исключении выброса блока swtich. data.getItemname() - это тип JsonValue

1 Ответ

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

Используйте JsonArrayBuilder и JsonObjectBuilder, чтобы решить проблему.

  JsonArrayBuilder add=Json.createArrayBuilder();
  JsonArrayBuilder delete=Json.createArrayBuilder();
  JsonArrayBuilder update=Json.createArrayBuilder();
    
    for(EntityData data: dataList)
    {
        
        switch(data.getOperation())
        {
        case "delete":
            JsonObjectBuilder deleteObj=Json.createObjectBuilder();
            deleteObj.add("CanonicalName", data.getItemname());
            delete.add(deleteObj);
            break;
            
        case "update":
            JsonObjectBuilder updateObj=Json.createObjectBuilder();
            updateObj.add("CanonicalName", data.getItemname());
            update.add(updateObj);
            break;
            
        case "add":
            JsonObjectBuilder addObj=Json.createObjectBuilder();
            addObj.add("CanonicalName", data.getItemname());
            add.add(addObj);
            break;  
            
        default:
            break;
        
        
        }
        
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...