2013-08-29 86 views
0

我正在使用J2ee Web應用程序,並試圖通過它的url獲取網頁的代碼JSON,以便稍後解析它。我已經嘗試下面的代碼:如何獲取網頁的JSON代碼

  package so4308554; 

import java.io.BufferedReader; 
import java.io.IOException;`` 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.Reader; 
import java.net.URL; 
import java.nio.charset.Charset; 

import org.json.JSONException; 
import org.json.JSONObject; 

public class JsonReader { 

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

    public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException { 
    InputStream is = new URL(url).openStream(); 
    try { 
     BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); 
     String jsonText = readAll(rd); 
     JSONObject json = new JSONObject(jsonText); 
     return json; 
    } finally { 
     is.close(); 
    } 
    } 

    public static void main(String[] args) throws IOException, JSONException { 
    JSONObject json = readJsonFromUrl("https://graph.facebook.com/19292868552"); 
    System.out.println(json.toString()); 
    System.out.println(json.get("id")); 
    } 
} 

但是如果我把一個又一個我得到這個例外,它與給定的URL只能: 「一個JSONObject文本必須以‘{’人品1」 我想我不能得到JSON網頁的內容,如果它是由HTML編碼...任何想法可能是什麼原因???????我該如何解決我的問題?

+0

錯誤顯示所有內容... JSON形式不正確..給出的URL不起作用 –

+3

這沒有意義。嘗試將HTML解析爲JSON與嘗試使用C編譯器編譯Java程序是一回事。如果你想解析一些JSON,你應該定位一個返回JSON的URL,而不是HTML。 –

+0

也許他想讓java程序連接到網站後臺或API並說出http,就好像它是一個瀏覽器,從而從後端接收一些JSON。 – Paul

回答

0
  1. 你想讓json離開html網頁嗎?
  2. 如果上一個問題的答案是「否」,請驗證您嘗試使用類似如下方法解析的json:http://jsonlint.com/,並檢查結果。
+0

我的回答是肯定的。我不想驗證JSON,我想知道的是如何通過它的網址從網頁獲取JSON代碼。 –

+0

那麼...通常你會從網頁獲取HTML,而不是JSON!如果你想解析HTML,你需要一個HTML解析器,而不是JSON解析器。 –

+0

看我的問題是,當我解析一個HTML它花了這麼多時間,特別是解析Html頁面的列表。爲了優化我的程序,我想到解析JSON代碼而不是HTML。 如果你有更好的解決方案,我會非常感謝:) –