How to remove null keys from JSON Object

I have the below JSON , i need to remove all the keys which have null value

I have tried this

import java.util.Iterator;
import org.json.JSONException;
import org.json.JSONObject;
public class Remove {
    public static void main(String[] args) throws JSONException {
    String str = "{rn" + 
            "       "videos": {rn" + 
            "   
            "       }}";
        JSONObject json_obj = new JSONObject(str);
        JSONObject allKeys_json=    json_obj.getJSONObject("videos");
        Iterator<String> keys = allKeys_json.keys();
        while( keys.hasNext() ) {
        String keyanme = (String)keys.next();
        String keyvalue = allKeys_json.getString(keyanme);
        if(keyvalue.contains("null"))
        {
            System.out.println(keyanme+"t"+keyvalue);
            json_obj.remove(keyanme);
        }
        }
    System.out.println(allKeys_json);
    }
}

but the actual json is unaffected , could you please tell me how to do this .

Answer

If it’s only about manipulating a string which structure you know well a solution would be to use some regex

str.replaceAll(".*": null(,)?\r\n", "");

It could be easier to find a good regex than to invest time in building a model that could be used by Jackson.

Three notes:

  • the code above doesn’t figure out which is the last line and adapt the json accordingly.

  • the pattern should be compiled separately.

  • org.json is very inefficient compared to Jackson.

Leave a Reply

Your email address will not be published. Required fields are marked *