Sto codificando una funzione in cui leggo e scrivo di nuovo JSON. Tuttavia posso leggere gli elementi JSON da un file, ma non posso modificare lo stesso oggetto caricato. Ecco il mio codice su cui sto lavorando.Come modificare un oggetto javax.json.JsonObject?
InputStream inp = new FileInputStream(jsonFilePath);
JsonReader reader = Json.createReader(inp);
JsonArray employeesArr = reader.readArray();
for (int i = 0; i < 2; i++) {
JsonObject jObj = employeesArr.getJsonObject(i);
JsonObject teammanager = jObj.getJsonObject("manager");
Employee manager = new Employee();
manager.name = teammanager.getString("name");
manager.emailAddress = teammanager.getString("email");
System.out.println("uploading File " + listOfFiles[i].getName());
File file = insertFile(...);
JsonObject tmpJsonValue = Json.createObjectBuilder().add("fileId", file.getId()).add("alternativeLink",file.getAlternateLink()).build();
jObj.put("alternativeLink", tmpJsonValue.get("alternativeLink")); <-- fails here
}
Ottengo la seguente eccezione quando lo eseguo.
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractMap.put(AbstractMap.java:203)
at com.mongodb.okr.DriveQuickstart.uploadAllFiles(DriveQuickstart.java:196)
at com.mongodb.okr.App.main(App.java:28)
Grazie. Suona corretto ma creare un nuovo oggetto è noioso. Guardando a Gson se hanno un approccio facile. – wayfare
@Himanshu Gson ha il proprio 'JsonObject' mutabile. Jackson, in alternativa, ha 'ObjectNode', anch'esso mutabile. –
c'è qualche preferenza importante? Ho solo bisogno di leggere -> Modifica -> Salva. – wayfare