我一直無法在網上找到解決方案。我有以下 JSON。
[{
"Name":"Adam",
"Age":"29",
"Addr":"Roland st",
"Height":"180",
"Kids": ["Charlie"]
"DummyData":
[{
"DummyData1":null,
"DummyData2":"840",
"DummyData3":
[{
"DummyData4":"INQU",
"DummyData5":null,
"DummyData6":null,
"DummyData7":123.45,
}]
}] }]
這個 JSON 結構以后可能會有不同的屬性。同樣,它也可能具有不同的空值,包括在 Kids 元素中(可以有多個單個元素或空值,例如"Kids": ["Name", ""])。以上只是一個例子。
我想用空字串替換所有 Null 值,然后將 JSON 陣列作為字串回傳。
這就是我到目前為止所擁有的。
private void traverse(JSONArray jsonArray) {
for (int i = 0; i < jsonArray.length(); i ) {
if(jsonArray.optJSONObject(i) != null) { //is null at "Kids": ["Charlie"]
JSONObject objects = jsonArray.getJSONObject(i);
Iterator<String> key = objects.keys();
while (key.hasNext()) {
String k = key.next().toString();
Object innerObject = objects.get(k);
if (innerObject instanceof JSONArray) {
JSONArray arr = objects.getJSONArray(k);
traverse(arr);
}
else if (!objects.isNull(k)) {
if (innerObject instanceof Integer) {
System.out.println("Key : " k ", value : " objects.getInt(k));}
else if (innerObject instanceof String) {
System.out.println("Key : " k ", value : " objects.getString(k));
} else if (innerObject instanceof Boolean) {
System.out.println("Key : " k ", value : " objects.getBoolean(k));
} else if (innerObject instanceof Double) {
System.out.println("Key : " k ", value : " objects.getDouble(k));
} else if (innerObject instanceof Long) {
System.out.println("Key : " k ", value : " objects.getLong(k));
}
}
else {
System.out.println("NULL value found!!!");
}
}
System.out.println("-----------");
}
}
}
如您所見,我已經能夠遍歷整個 json 樹。但是,我無法弄清楚如何以不改變 json 結構的方式替換空值?幫助將不勝感激。提前致謝。
uj5u.com熱心網友回復:
正如@bananas 所說,如果可能,請使用正則運算式,無需遍歷您正在做的事情。如果您的 JSON 作為字串出現,那么它只是一行。如果不只是先將您的 jsonArray 轉換為字串,然后使用正則運算式。
String jsonRegex = json.replace("null", "");
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/418928.html
標籤:
