2017-06-26 15 views
0

私はJavaでクエリを実行する必要があるWebサイトを持っています。ここでは、私は、これはJSONArrayあると思ったが、Eclipseはいつも私に言った、非常に最初の開始時のデータセットJSONObjectをJSONArray例外に変換する

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

を見ることができ、そうではありません。

だからそのため私は、JSONObjectからJSONArrayに変換しようとしたが、私はこのエラーを取得する:私が間違って

org.json.JSONException: JSONObject["dataset"] is not a 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(); 
} 

}

+0

'dataset'それは "JSONObject [" データ」]が見つからないというエラーがスローされますあなたの応答 –

答えて

2

jsonobjectsdatasetフィールドはJSONObjectないJSONArrayです。これに

jsonobjects.getJSONArray("dataset"); 

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

であなたの希望を行うには、まさに、' jsonobject'あり、これを変更します" – Blnpwr

+0

本当ですか?私はちょうどJSONをローカルに印刷し、 'データ'は 'データセット'のJSONArrayのJSONArrayです。JSONObject –

+0

あなたのコードをコピーして、私が逃したものを確認できるようにしてください。 – Blnpwr

関連する問題