我有下面的JSON,我需要删除所有具有空值的键
我已经试过这个
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);
}
}
但是实际的JSON是不受影响的,你能告诉我怎么做吗?
6条答案
按热度按时间6qftjkof1#
如果只是操作一个字符串,你很熟悉它的结构,那么一个解决方案就是使用正则表达式
找到一个好的正则表达式可能比花时间构建一个可供Jackson使用的模型更容易。
三个注意事项:
x759pob22#
像这样检查空值
这个问题
iyr7buue3#
首先,创建一个与JSON字符串对应的模型类。
添加
到你的模型类,比如
http://www.baeldung.com/jackson-deserialize-json-unknown-properties
zfciruhq4#
使用JacksonAPI并在模型/DTO类上使用@JsonInclude(Include.NON_NULL)来删除。
像
g6baxovj5#
thx!
下面是一个改进的正则表达式,它也适用于格式化的和未格式化的JSON字符串:
2exbekwf6#
我这样使用它,它为我工作。