此处参考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阅读器上并进行存储和读取时,它可以读取。所以我想我没有正确转义字符。有人可以帮我阅读此文件吗?
答案 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());