Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove null keys from JSON Object

Tags:

java

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 = "{\r\n" + 
            "       \"videos\": {\r\n" + 
            "   
            "       }}";
        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 .

like image 969
Pawan Avatar asked Sep 14 '25 14:09

Pawan


1 Answers

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.

like image 80
otonglet Avatar answered Sep 16 '25 03:09

otonglet