要使用 Gson 反序列化 JSON,并为不存在的字段设置默认值,可以使用 Gson 的 fromJson() 方法结合自定义的 JsonDeserializer 实现。\n\n首先,定义一个自定义的 JsonDeserializer 类,用于处理反序列化过程中不存在的字段。在这个类中,你可以设置默认值或者使用其他逻辑来处理不存在的字段。以下是一个示例:\n\njava\nimport com.google.gson.*;\n\npublic class CustomDeserializer implements JsonDeserializer<MyObject> {\n @Override\n public MyObject deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {\n JsonObject jsonObject = json.getAsJsonObject();\n\n // 处理不存在的字段\n JsonElement field1Element = jsonObject.get("field1");\n String field1 = field1Element != null ? field1Element.getAsString() : "default value";\n\n JsonElement field2Element = jsonObject.get("field2");\n int field2 = field2Element != null ? field2Element.getAsInt() : 0;\n\n // 创建 MyObject 对象并设置字段值\n MyObject myObject = new MyObject();\n myObject.setField1(field1);\n myObject.setField2(field2);\n\n return myObject;\n }\n}\n\n\n接下来,你可以使用 GsonBuilder 注册自定义的 JsonDeserializer,并使用 Gson 对象进行反序列化。以下是一个示例:\n\njava\nimport com.google.gson.Gson;\nimport com.google.gson.GsonBuilder;\n\npublic class Main {\n public static void main(String[] args) {\n String json = "{\"field1\": \"value1\"}";\n\n GsonBuilder gsonBuilder = new GsonBuilder();\n gsonBuilder.registerTypeAdapter(MyObject.class, new CustomDeserializer());\n Gson gson = gsonBuilder.create();\n\n MyObject myObject = gson.fromJson(json, MyObject.class);\n\n System.out.println(myObject.getField1()); // 输出: value1\n System.out.println(myObject.getField2()); // 输出: 0 (默认值)\n }\n}\n\n\n在上述示例中,我们使用自定义的 JsonDeserializer 处理不存在的字段,并为字段设置默认值。在 Main 类的 main 方法中,我们创建了一个 GsonBuilder 对象,并使用 registerTypeAdapter() 方法注册了自定义的 JsonDeserializer。然后,通过调用 Gson 对象的 fromJson() 方法将 JSON 反序列化为 MyObject 对象。\n\n注意:在自定义的 JsonDeserializer 中,你可以根据实际需求来处理不存在的字段。上述示例中的处理方式是设置了默认值,你也可以根据其他逻辑来处理不存在的字段。

Gson 反序列化 JSON:为不存在的字段设置默认值

原文地址: https://www.cveoy.top/t/topic/qalQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录