使用java将json数组放入hashmap

时间:2015-08-28 09:59:42

标签: java json hashmap jackson

{
    "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 个答案:

答案 0 :(得分:0)

易于维护的解决方案是使用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);

答案 1 :(得分:0)

我也建议使用Gson。

如果您使用Gradle as,请将其导入您的项目(您的应用的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将您的Server对象解析为列表;

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将包含您的服务器对象列表。