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.