如何将包含json的字符串解析到java容器中?

时间:2018-12-30 13:52:38

标签: java rest parsing dictionary gson

我想将包含json的Java字符串解析为某些Java容器/集合。

我对包含以下内容的字符串A没问题:

{"id":"0bda5158-a533-498a-8657-79aec0c3fb65","name":"Andrzej","email":"test@gmail.com"}

简单json ==>字符串<->字符串。 问题是当字符串B包含以下内容(json数组)时:

[{"id":"0bda5158-a533-498a-8657-79aec0c3fb65","name":"Andrzej","email":"test@gmail.com"}]

这是我以前解析的代码:

private static class TestResponse {

    public final String body;
    public final int status;

    public TestResponse(int status, String body) {
        this.status = status;
        this.body = body;
    }

    public Map<String, String> json() {
        return new Gson().fromJson(body, HashMap.class);
    }
}

请求方法如下:

private TestResponse request(String method, String path) {
        try {
            URL url = new URL("http://localhost:4567" + path);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod(method);
            connection.setDoOutput(true);
            connection.connect();
            String body = IOUtils.toString(connection.getInputStream());
            return new TestResponse(connection.getResponseCode(), body);
        } catch (IOException e) {
            e.printStackTrace();
            fail("Sending request failed: " + e.getMessage());
            return null;
        }
    }

第一个字符串A的所有工作。我一直在做下面的事情(简单的Map):

TestResponse res = request("PUT", "/user/create?name=Andrzej&email=test@gmail.com");
Map<String, String> json = res.json();

问题出在字符串B上-有一个json数组。在那里我不能使用简单的地图。我不知道该怎么解决。请帮助我,谢谢你。

0 个答案:

没有答案