I have some JSONObject(s) in my workflow, and the same JSONObjects are stored by writting them into a json file.
I would like an efficient way to update the json file, only fields where is needed, with the content of newer JSONObjects instances.
Eg:
On file I have
ObjectOnFile = {key1:val1, key2:val2,...}
In memory I have
ObjectInMemory = {key1:val1_newer, key2:val2_newer,...}
The update will be like:
if (!(ObjectInMemory.get(key1).equals(ObjectOnFile.get(key1)))
// update file field value <--- how to?
In general I would like to update the value of every key where its content is newer (different).
Actually my code is:
import org.json.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper mapper = new ObjectMapper();
Sting key = "key1"; //whatever
JSONObject jo = new JSONObject("{key1:\"val1\", key2:\"val2\"}");
JSONObject root = mapper.readValue(new File(json_file), JSONObject.class);
JSONObject val_newer = jo.getJSONObject(key);
JSONObject val_older = root.getJSObject(key);
if(!val_newer.equals(val_older)){
root.put(key,val_newer);
/*write back root to the json file...how? */
}
You can use the JSON text editor to easily modify, format, and validate your JSON files.
for everyline, you can use regex to find and replace. Then you can either overwrite the file or write onto a new file. Alternatively, you can load the json python in and convert it into a string. Then replace the text using the regex.
Simply you can do like this:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import org.json.JSONException;
import org.json.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Test {
public static void main(String[] args) throws JSONException, IOException
{
ObjectMapper mapper = new ObjectMapper();
String key = "key1"; //whatever
JSONObject jo = new JSONObject("{key1:\"val1\", key2:\"val2\"}");
//Read from file
JSONObject root = mapper.readValue(new File("json_file"), JSONObject.class);
String val_newer = jo.getString(key);
String val_older = root.getString(key);
//Compare values
if(!val_newer.equals(val_older))
{
//Update value in object
root.put(key,val_newer);
//Write into the file
try (FileWriter file = new FileWriter("json_file"))
{
file.write(root.toString());
System.out.println("Successfully updated json object to file...!!");
}
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With