日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 对象转json,java首字母小写,判断方法是否为javabean方法

發布時間:2024/10/5 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 对象转json,java首字母小写,判断方法是否为javabean方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

將java對象轉成json可用的類庫很多,知名的有fastjson,jackson等,今天在做項目的時候發現項目沒有上述依賴,用的是google的gson,因此封裝方法將java對象轉成gson代表的json對象。

大致流程如下:

1:通過反射獲取java對象的所有public方法,再篩選出javabean的getter方法(方法返回類型為boolean 則為is開頭)。

2:遍歷篩選出的方法,通過 字符串首字母小寫方法 從方法名計算得到對應的屬性名。

3:通過目標對象調用篩選出的方法,將屬性名與方法返回值添加到json中。

以下是代碼實現:

1:判斷方法是否為javabean的getter方法:

public static boolean isJavaBeanGetterMethod(Method method){if (method == null || method.getParameterCount() > 0 || "void".equals( method.getReturnType().getName() )) return false;String methodName = method.getName();if ("getClass".equals(methodName)) return false;boolean isReturnBoolean = "boolean".equals( method.getReturnType().getName() );if (methodName.matches("^(get[A-Z])[a-zA-Z0-9_$]+") && !isReturnBoolean|| methodName.matches("^(is[A-Z])[a-zA-Z0-9_$]+") && isReturnBoolean){return true;}return false;}

2:通過Javabean方法獲取對應的屬性名+字符串首字母小寫+判斷字符串是否有內容

/*** @description:通過Javabean方法獲取對應的屬性名* @param method* @return java.lang.String*/public static String getJavaBeanFieldName(Method method){String methodName = method.getName();String fieldName = methodName.replaceFirst("^(get|is|set)", "");return initialLower(fieldName);}/*** @description:首字母小寫* @param str* @return java.lang.String*/public static String initialLower(String str){if (isEmpty(str)) return str;char[] strChar = str.toCharArray();if (strChar[0] >= 'A' && strChar[0] <= 'Z'){strChar[0] += 32;return new String(strChar);}return str;}/*** @description:判斷字符串是否有內容* @param str* @return boolean*/public static boolean isEmpty(String str){return str == null || "".equals( str.trim() );}

3:對象轉成json

/*** @description:對象轉jsonObject* @param obj* @param addNotNull 是否只處理非空屬性* @param ignoreFields 忽略的屬性* @exception IllegalAccessException* @return com.google.gson.JsonObject*/public static JsonObject objectToJson(Object obj, boolean addNotNull, String...ignoreFields) throws Exception {if (obj == null) return null;List<String> ignoreFieldList = Arrays.asList(ignoreFields);JsonObject rsJson = new JsonObject();Class cls = obj.getClass();//拿public方法Method[] methods = cls.getMethods();for (Method method : methods) {if (Modifier.isStatic( method.getModifiers() ) || !isJavaBeanGetterMethod(method)) continue;Object value = method.invoke(obj);if (value == null && addNotNull) continue;String fieldName = getJavaBeanFieldName(method);if (ignoreFieldList.contains(fieldName)) continue;rsJson.addProperty(fieldName, String.valueOf(value));}return rsJson;}

調用運行結果:

?

總結

以上是生活随笔為你收集整理的java 对象转json,java首字母小写,判断方法是否为javabean方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。