欢迎选择我的课程,让我们一起见证您的进步~~
直接用反射检测json是否有该字段不就行了。
class A { String a; String b; List<B> list; } class B{...} private static void checkJson(JSONObject json, Class<?> clazz) { Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { if (!json.has(field.getName())) { throw new JsonParseException(); } // 遍历数组 Type type = field.getGenericType(); if (type instanceof ParameterizedType) { Type[] types = ((ParameterizedType) type).getActualTypeArguments(); Type t = types[0]; JSONArray array = json.getJSONArray(field.getName()); for (int i = 0; i < array.length(); i++) { Object childJSON = array.get(i); if (childJSON instanceof JSONObject) { checkJson((JSONObject) childJSON, (Class) t); } } } } } public static void main(String[] args){ A a = new A(); ... String json = new Gson().toJson(a); checkJson(new JSONObject(json), A.class); }
貌似没找到,可以自己通过业务逻辑进行控制,在序列化之后得到的Object进行空判断即可
这个只能写一个自定义的Deserializer, 可以参看stackoverflow,有人问过同样的问题。
http://stackoverflow.com/questions/3163193/strict-json-parsing-with-googles-gson
直接用反射检测json是否有该字段不就行了。
貌似没找到,可以自己通过业务逻辑进行控制,在序列化之后得到的Object进行空判断即可
这个只能写一个自定义的Deserializer, 可以参看stackoverflow,有人问过同样的问题。
http://stackoverflow.com/questions/3163193/strict-json-parsing-with-googles-gson