Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JSON File - Java: editing/updating fields values

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? */
}
like image 484
GrayFox Avatar asked Jun 26 '16 18:06

GrayFox


People also ask

Can JSON files be edited?

You can use the JSON text editor to easily modify, format, and validate your JSON files.

How do you find and replace a part of a value in JSON file?

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.


1 Answers

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...!!");
            }
        }
    }
}
like image 198
PVR Avatar answered Oct 03 '22 09:10

PVR