Json字符串转Map

2020-03-11  本文已影响0人  史啸天

    今天为大家分享一下,超实用的json字符串转Map的方法,可以收藏起来做工具类使用哦;二话不说,上代码;

1、引入jar
<dependency>
        <groupId>net.sf.json-lib</groupId>
        <artifactId>json-lib</artifactId>
        <version>2.4</version>
        <classifier>jdk15</classifier>
</dependency>
2、创建工具类
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import java.util.Map;

public class JsonToMap {
    private Object oJson;

    public JsonToMap(Object jStr) {
        this.oJson = jStr;
    }

    /**
     * 将获取的value值封装给对象
     * @param s value值
     * @return 对象
     */
    public JsonToMap get(Object s) {
        if (s instanceof Integer) return new JsonToMap(JSONArray.fromObject(oJson).get((int) s));
        else return new JsonToMap(jsonToMap(oJson).get(s));

    }

    @Override
    public String toString() {
        return oJson.toString();
    }

    /**
     * json string 转换为 map 对象
     *
     * @param jsonObj
     * @return
     */
    public static Map<Object, Object> jsonToMap(Object jsonObj) {
        JSONObject jsonObject = JSONObject.fromObject(jsonObj);
        Map<Object, Object> map = (Map) jsonObject;
        return map;
    }
}

3、测试一下

    /**
     * 测试jsonToMap
     */
    public static void main(String[] args) {
        /**
         * json示例
            {
                "name": "BeJson",
                "address": {
                    "street": "科技园路.",
                    "city": "江苏苏州",
                    "country": "中国"
                },
                "links": [
                    {
                        "name": "Google",
                        "url": "http://www.google.com"
                    },
                    {
                        "name": "Baidu",
                        "url": "http://www.baidu.com"
                    }
                ]
            }
         */
        String json = "{\n" + 
                "               \"name\": \"BeJson\",\n" + 
                "               \"address\": {\n" + 
                "                   \"street\": \"科技园路.\",\n" + 
                "                   \"city\": \"江苏苏州\",\n" + 
                "                   \"country\": \"中国\"\n" + 
                "               },\n" + 
                "               \"links\": [\n" + 
                "                   {\n" + 
                "                       \"name\": \"Google\",\n" + 
                "                       \"url\": \"http://www.google.com\"\n" + 
                "                   },\n" + 
                "                   {\n" + 
                "                       \"name\": \"Baidu\",\n" + 
                "                       \"url\": \"http://www.baidu.com\"\n" + 
                "                   }\n" + 
                "               ]\n" + 
                "           }";
        JsonToMap map = new JsonToMap(json);
        System.out.println(map.get("name").toString());
        System.out.println(map.get("address").get("country"));
        System.out.println(map.get("links").get(0).get("name"));
    }
4、输入结果
BeJson
中国
Google
5、总结

    因为返回结果是jsonMap所以面对数组类型的,也可以直接get(index)出来,是不是超方便。

上一篇下一篇

猜你喜欢

热点阅读