Gson 是一個用于解析和生成 JSON 的 Java 庫。在處理 JSON 中的空值時,可以使用 Gson 提供的 JsonElement 類型來處理可能的空值(null)。以下是一個簡單的示例,展示了如何使用 Gson 處理 JSON 中的空值:
首先,添加 Gson 依賴項(如果您還沒有添加):
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version>
</dependency>
然后,使用以下代碼處理 JSON 中的空值:
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class GsonExample {
public static void main(String[] args) {
String jsonString = "{\"name\": \"John\", \"age\": 30, \"city\": null}";
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(jsonString, JsonObject.class);
// 處理空值
handleNullValues(jsonObject);
// 將處理后的 JSON 對象轉換回字符串
String result = gson.toJson(jsonObject);
System.out.println(result);
}
private static void handleNullValues(JsonObject jsonObject) {
for (String key : jsonObject.keySet()) {
JsonElement value = jsonObject.get(key);
if (value.isJsonObject()) {
handleNullValues((JsonObject) value);
} else if (value.isJsonArray()) {
handleJsonArray((JsonArray) value);
} else if (value.isJsonPrimitive()) {
JsonPrimitive primitiveValue = value.getAsJsonPrimitive();
if (primitiveValue.isString() && primitiveValue.getAsString().isEmpty()) {
System.out.println("Empty string value for key: " + key);
} else if (primitiveValue.isNumber() && primitiveValue.getAsNumber().doubleValue() == 0) {
System.out.println("Zero value for key: " + key);
}
}
}
}
private static void handleJsonArray(JsonArray jsonArray) {
for (int i = 0; i < jsonArray.size(); i++) {
JsonElement element = jsonArray.get(i);
if (element.isJsonObject()) {
handleNullValues((JsonObject) element);
} else if (element.isJsonArray()) {
handleJsonArray((JsonArray) element);
} else if (element.isJsonPrimitive()) {
JsonPrimitive primitiveValue = element.getAsJsonPrimitive();
if (primitiveValue.isString() && primitiveValue.getAsString().isEmpty()) {
System.out.println("Empty string value at index: " + i);
} else if (primitiveValue.isNumber() && primitiveValue.getAsNumber().doubleValue() == 0) {
System.out.println("Zero value at index: " + i);
}
}
}
}
}
在這個示例中,我們首先使用 Gson 將 JSON 字符串轉換為一個 JsonObject。然后,我們遞歸地遍歷 JSON 對象的鍵值對,處理可能的空值。如果值是字符串并且為空,我們打印出相應的消息。如果值是數字并且為零,我們也打印出相應的消息。最后,我們將處理后的 JSON 對象轉換回字符串并打印出來。