84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
欢迎选择我的课程,让我们一起见证您的进步~~
直接用反射檢測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