{"id":1508,"date":"2023-03-25T13:59:19","date_gmt":"2023-03-25T05:59:19","guid":{"rendered":"https:\/\/www.appblog.cn\/?p=1508"},"modified":"2023-04-28T20:21:53","modified_gmt":"2023-04-28T12:21:53","slug":"java-jsonobject-implementation-for-json-string-and-java-object-conversion","status":"publish","type":"post","link":"https:\/\/www.appblog.cn\/index.php\/2023\/03\/25\/java-jsonobject-implementation-for-json-string-and-java-object-conversion\/","title":{"rendered":"Java\u539f\u751fJSONObject\u5b9e\u73b0JSON\u4e32\u4e0eJava\u5bf9\u8c61\u4e92\u8f6c"},"content":{"rendered":"<h2>JSON\u4e32\u8f6cJava\u5bf9\u8c61<\/h2>\n<h3>\u901a\u7528Object<\/h3>\n<p><!-- more --><\/p>\n<pre><code class=\"language-java\">public static &lt;T&gt; T jsonToObject(String json, Class&lt;T&gt; c)  {\n    try {\n        JSONObject jsonObject = new JSONObject(json);\n        return (T) jsonToObject(jsonObject, c);\n    } catch (JSONException e) {\n        NLog.e(TAG, Log.getStackTraceString(e));\n    } catch (InstantiationException e) {\n        NLog.e(TAG, Log.getStackTraceString(e));\n    } catch (IllegalAccessException e) {\n        NLog.e(TAG, Log.getStackTraceString(e));\n    }\n    return null;\n}\n\n\/\/\u4e00\u4e2a\u9759\u6001\u7c7b\uff0c\u5c06json\u5bf9\u8c61\uff0c\u8f6c\u5316\u4e3ajava\nprivate static Object jsonToObject(JSONObject jsonObject, Class c) throws IllegalAccessException, InstantiationException {\n    Object obj = c.newInstance();\n    Iterator it = jsonObject.keys();\n    Field[] fields = c.getDeclaredFields();\n    while (it.hasNext()) {\n        String key = (String) it.next();\n        \/\/\u5224\u65ad\u5b57\u6bb5\n        for (Field field : fields) {\n            if (field.getName().equals(key)) {\n                useSetter(c, field, jsonObject, obj);\n                break;\n            }\n        }\n    }\n    return obj;\n}\n\n\/\/\u8c03\u7528\u8be5\u7c7b\u7684setter\u65b9\u6cd5\nprivate static void useSetter(Class c, Field field, JSONObject jsonObject, Object obj) {\n    \/\/\u83b7\u53d6\u5b57\u6bb5\u7c7b\u578b\u4ee5\u53ca\u5b57\u6bb5\u540d\u79f0\n    Class fieldType = field.getType();\n    String fieldName = field.getName();\n    String methodName = toMethodName(fieldName);\n    \/\/System.out.println(methodName+&quot;\u7c7b\u578b&quot;+fieldType);\n    \/\/\u8c03\u7528\u65b9\u6cd5\n    try {\n        Method method = c.getMethod(methodName, fieldType);\n        method.invoke(obj, jsonObject.get(fieldName));\n    } catch (NoSuchMethodException e) {\n        NLog.e(TAG, Log.getStackTraceString(e));\n    } catch (Exception e) {\n        NLog.e(TAG, Log.getStackTraceString(e));\n    }\n}\n\n\/\/\u5c06fieldName\u8f6c\u5316\u4e3a\u65b9\u6cd5\u540d\u79f0\nprivate static String toMethodName(String name) {\n    String methodName = &quot;set&quot; + name.substring(0, 1).toUpperCase() + name.substring(1);\n    return methodName;\n}<\/code><\/pre>\n<h3>Map<\/h3>\n<pre><code class=\"language-java\">public static Map&lt;String, Object&gt; jsonToMap(String json) {\n    if (TextUtils.isEmpty(json)) {\n        return null;\n    }\n    try {\n        Map&lt;String, Object&gt; params = new HashMap&lt;&gt;();\n        JSONObject jsonObject = new JSONObject(json);\n        return jsonObjectToMap(jsonObject, params);\n\n    } catch (JSONException e) {\n        NLog.e(TAG, Log.getStackTraceString(e));\n    }\n    return null;\n}\n\npublic static Map&lt;String, Object&gt; jsonObjectToMap(JSONObject jsonObject) {\n    if (jsonObject == null) return null;\n    Map&lt;String, Object&gt; params = new HashMap&lt;&gt;();\n    return jsonObjectToMap(jsonObject, params);\n}\n\nprivate static Map&lt;String, Object&gt; jsonObjectToMap(JSONObject jsonObject, Map&lt;String, Object&gt; params) {\n    if (jsonObject == null || params == null) {\n        return params;\n    }\n    try {\n        for (Iterator&lt;String&gt; iterator = jsonObject.keys(); iterator.hasNext();) {\n            String key = iterator.next();\n            if (!TextUtils.isEmpty(key)) {\n                Object object = jsonObject.get(key);\n                if (object instanceof JSONObject) {\n                    params.put(key, jsonObjectToMap((JSONObject) object, params));\n                } else {\n                    params.put(key, jsonObject.get(key));\n                }\n            }\n        }\n    } catch (JSONException e) {\n        NLog.e(TAG, Log.getStackTraceString(e));\n    }\n    return params;\n}<\/code><\/pre>\n<h2>Java\u5bf9\u8c61\u8f6cJSON\u4e32<\/h2>\n<h3>\u901a\u7528Object<\/h3>\n<pre><code class=\"language-java\"><\/code><\/pre>\n<h3>Map<\/h3>\n<pre><code class=\"language-java\">public static String mapToJson(Map&lt;String, String&gt; map) {\n    if (map.isEmpty()) return &quot;{}&quot;;\n    try {\n        JSONObject json = new JSONObject();\n        for (Map.Entry&lt;String, String&gt; entry : map.entrySet()) {\n            json.put(entry.getKey(), entry.getValue());\n        }\n        return json.toString();\n    } catch (JSONException e) {\n        NLog.e(TAG, Log.getStackTraceString(e));\n    }\n    return &quot;{}&quot;;\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>JSON\u4e32\u8f6cJava\u5bf9\u8c61 \u901a\u7528Object public static &lt;T&gt; T jsonToO [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43],"tags":[74],"class_list":["post-1508","post","type-post","status-publish","format-standard","hentry","category-java-basic","tag-json"],"_links":{"self":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/1508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=1508"}],"version-history":[{"count":0,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/1508\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=1508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=1508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=1508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}