如何使用转义字符访问JSON数组

时间:2018-10-05 06:21:06

标签: java json string

此处参考JSON文件:https://docs.google.com/document/d/14mTDpmR_Qu8UXz-bMxddEfL0AcB60T_S8N8MDTMYf5U/edit?usp=sharing

我正在尝试读取 Projects 数组,但它返回的长度为0。 但是数组中有值。

以下是我的代码:

JSONObject json = new JSONObject(IOUtils.toString(new URL("JSONFile URL Here"), Charset.forName("ISO-8859-2")));
            JSONArray jsonArray = json.getJSONArray("projects");
            System.out.println(jsonArray.length());

但是,当我将JSON文件发布到在线JSON阅读器上并进行存储和读取时,它可以读取。所以我想我没有正确转义字符。有人可以帮我阅读此文件吗?

3 个答案:

答案 0 :(得分:1)

您可以尝试这个吗?

InputStream is = new URL("your url").openStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
JSONObject json = new JSONObject(readJsonFile(bufferedReader));
JSONArray jsonArray = json.getJSONArray("projects");
System.out.println(jsonArray.length());

您的readJsonFile方法应该是这样;

private String readJsonFile(Reader reader) throws IOException {
    StringBuilder sb = new StringBuilder();
    int cp;
    while ((cp = reader.read()) != -1) {
        sb.append((char) cp);
    }
    return sb.toString();
}

答案 1 :(得分:1)

我正在访问JIRA api,并且由于未通过身份验证,所以得到了一个空的JSON字符串。这与转义符无关。

答案 2 :(得分:-2)

fastjson似乎可以满足您的需求:

JSONObject jsonObject = JSON.parseObject("you json string");
JSONArray jsonArray = jsonObject.getJSONArray("projects");
System.out.println(jsonArray.size());