繁体   English   中英

将JSONObject转换为JSONArray异常

[英]Converting JSONObject to JSONArray Exception

我有一个网站必须使用Java进行查询。 在这里您可以看到数据集

https://www.quandl.com/api/v3/datasets/SSE/HYQ.json?start_date=2017-01-01&end_date=2017-01-31

一开始,我以为这是JSONArray,但是Eclipse总是告诉我,不是。

因此,因此我尝试将JSONObject转换为JSONArray,但出现此错误:

org.json.JSONException:JSONObject [“ dataset”]不是JSONArray。

我究竟做错了什么?

这是我的代码:

package query;

 import java.net.URL;
 import java.net.URLConnection;
 import java.nio.charset.Charset;

 import java.util.*;
 import java.io.*;
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;

public class Stockquery {

public static void main(String[] args) {

    String jsonString = callURL(
            "https://www.quandl.com/api/v3/datasets/SSE/HYQ.json?start_date=2017-01-01&end_date=2017-01-31");
    // System.out.println("\n\njsonString: " + jsonString);

    try {
        JSONObject jsonobjects = new JSONObject(jsonString);
        System.out.println("\n\njsonArray: " + jsonobjects);
        JSONArray arr = jsonobjects.getJSONArray("dataset");

        for (int i = 0; i < arr.length(); i++) {
            JSONObject obj = arr.getJSONObject(i); 
            System.out.println(obj);
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }

}

public static String callURL(String myURL) {
    // System.out.println("Requested URL:" + myURL);
    StringBuilder sb = new StringBuilder();
    URLConnection urlConn = null;
    InputStreamReader in = null;
    try {
        URL url = new URL(myURL);
        urlConn = url.openConnection();
        if (urlConn != null)
            urlConn.setReadTimeout(60 * 1000);
        if (urlConn != null && urlConn.getInputStream() != null) {
            in = new InputStreamReader(urlConn.getInputStream(), Charset.defaultCharset());
            BufferedReader bufferedReader = new BufferedReader(in);
            if (bufferedReader != null) {
                int cp;
                while ((cp = bufferedReader.read()) != -1) {
                    sb.append((char) cp);
                }
                bufferedReader.close();
            }
        }
        in.close();
    } catch (Exception e) {
        throw new RuntimeException("Exception while calling URL:" + myURL, e);
    }

    return sb.toString();
}

}

jsonobjectsdataset字段是JSONObject而不是JSONArray。 更改此:

jsonobjects.getJSONArray("dataset");

对此:

JSONObject dataset = jsonobjects.getJSONObject("dataset");
JSONArray array    = dataset.getJSONArray("data");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM