Dies könnte eine dumme Frage sein, aber was ist der einfachste Weg zu lesen und parsen JSON von URL in Java?
In Groovy, es ist eine Frage von wenigen Zeilen Code. Java Beispiele, die ich finde, sind lächerlich lang (und haben riesige Ausnahmebehandlung Block).
Alles, was ich tun möchte, ist, den Inhalt von diesem Link zu lesen.
Mit dem Maven Artefakt org.json:json
habe ich den folgenden Code erhalten, der meiner Meinung nach recht kurz ist. Nicht so kurz wie möglich, aber immer noch brauchbar.
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"));
}
}
Verwenden Sie HttpClient, um den Inhalt der URL zu erfassen. Und verwenden Sie dann die Bibliothek von json.org, um das JSON zu parsen. Ich habe diese beiden Bibliotheken in vielen Projekten verwendet und sie waren robust und einfach zu bedienen.
Ansonsten können Sie versuchen, eine Facebook-API-Java-Bibliothek zu verwenden. Ich habe keine Erfahrung in diesem Bereich, aber es gibt eine Frage auf Stack Overflow, die sich auf using a Facebook API in java bezieht. Vielleicht möchten Sie sich RestFB als eine gute Wahl für eine zu verwendende Bibliothek ansehen.
Ich bin mir nicht sicher, ob dies effizient ist, aber es ist eine der möglichen Methoden:
Lesen Sie json von url verwenden url.openStream()
und lesen Sie den Inhalt in einen String.
Konstruieren Sie ein JSON-Objekt mit dieser Zeichenkette (mehr unter json.org)
JSONObject(java.lang.String source)
Construct a JSONObject from a source JSON text string.