有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用java将json数组放入hashmap

{
    "Servers": [
        {
            "server": "server1",
            "port": "8000"
        },
        {
            "server": "server2",
            "port": "8000"
        },
        {
            "server": "server3",
            "port": "8000"
        }
    ]
}

我尝试使用以下方法将此json文件放入HashMap:

Map<String,Object> map = mapper.readValue(jsonfile, new TypeReference<Map<String, Object>>() {});

jsonfile这里表示存储json文件的路径。 请建议如何将此json文件放入HashMap


共 (2) 个答案

  1. # 1 楼答案

    我也建议使用Gson

    如果您使用gradle作为应用,请将其导入项目(应用程序的build.gradle)

    compile 'com.google.code.gson:gson:2.3.1'
    

    如果您没有使用Gradle,请参阅Gson docs here了解其他构建工具

    创建一个容器对象来解析Json并保存值

    class Server {
        String server;
        int port;
        // I did not take encapsulation into account for brevity
    }
    

    然后使用Gson将服务器对象解析为列表

    BufferedReader br = new BufferedReader(new FileReader("path_to_your_file"));
    Gson gson = new Gson();
    ArrayList<Server> serverList = gson.fromJson(br, new TypeToken<List<Server>>(){}.getType());
    

    serverList将包含服务器对象的列表

  2. # 2 楼答案

    简单且可维护的解决方案是使用一个JSON解析库,比如GSON

    一般来说,您必须创建bean对象,它将定义json文件的结构,然后您可以像这样解析它

        BufferedReader br = new BufferedReader(
            new FileReader("c:\\file.json"));
    
        //convert the json string back to object
        DataObject obj = gson.fromJson(br, DataObject.class);