2013-11-11 3 views
0

Ниже приведен тестовый код, в котором я пытаюсь отправить какой-либо запрос через google api, api должен отправить ответ в строке синтаксического анализа json. Когда я печатаю строку, я отчетливо вижу объекты, такие как url, но когда я пытаюсь получить эти объекты из объекта JSON, я получаю ошибку.Ошибка JSON в Java при попытке доступа к google api

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.URL; 
import java.net.URLConnection; 

import org.json.JSONObject; 



public class test { 

    public static void main (String[] args) { 

     try { 
      // The request also includes the userip parameter which provides the end 
      // user's IP address. Doing so will help distinguish this legitimate 
      // server-side traffic from traffic which doesn't come from an end-user. 
      URL url = new URL(
        "https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=lahore"); 
      URLConnection connection = url.openConnection(); 


      String line; 
      StringBuilder builder = new StringBuilder(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
      while((line = reader.readLine()) != null) { 
       builder.append(line); 
       System.out.println(line); 

      } 

      JSONObject jsonObject = new JSONObject(builder.toString()); 
      System.out.println(jsonObject); 

      String url1 = (String) jsonObject.get("url"); 
      System.out.println(url1); 


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

    } 

} 

он бросает следующее исключение:

org.json.JSONException: JSONObject["url"] not found. 
    at org.json.JSONObject.get(JSONObject.java:459) 
    at org.json.JSONObject.getJSONArray(JSONObject.java:540) 
    at test.main(test.java:37) 

Любая помощь высоко ценится.

+0

У U, похоже, многоязычные символы, попробуйте этот BufferedReader reader = new BufferedReader (новый InputStreamReader (connection.getInputStream(), Charset.forName («UTF-8»))); –

+0

Привет, Нитин, когда я конвертирую строку в объект json, некоторые из них игнорируют половину строки и начинаются с курсора сущности. все предыдущие объекты пропущены. – Zohaib

ответ

1

После изучения JSon строки:

Вы не можете непосредственно получить «URL», чтобы получить «URL» Вы должны были бы сделать ниже, как только вы читаете поток в StringBuilder:

JSONObject jsonObject = new JSONObject(builder.toString()); 
JSONObject responseData = (JSONObject)jsonObject.get("responseData"); 
JSONArray results = (JSONArray)responseData.get("results"); 
for(int i = 0; i < results.length(); i++) 
{ 
    JSONObject urlObject = (JSONObject)results.get(i); 
    System.out.println(urlObject.get("url")); 
} 
Смежные вопросы