Dette er måske et dumt spørgsmål, men hvad er den enkleste måde at læse og analysere JSON fra URL i Java?
I Groovy er det et spørgsmål om få linjer kode. Java-eksempler, som jeg finder, er latterligt lange (og har enorme undtagelseshåndteringsblokke).
Det eneste, jeg ønsker at gøre, er at læse indholdet af dette link.
Ved hjælp af Maven artefaktet org.json:json
fik jeg følgende kode, som jeg synes er ret kort. Ikke så kort som muligt, men stadig brugbar.
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"));
}
}
Brug HttpClient til at hente indholdet af URL'en. Og brug derefter biblioteket fra json.org til at analysere JSON'en. Jeg har brugt disse to biblioteker på mange projekter, og de har været robuste og enkle at bruge.
Ellers kan du prøve at bruge et Facebook API java-bibliotek. Jeg har ikke nogen erfaring på dette område, men der er et spørgsmål på stack overflow relateret til using a Facebook API in java. Du kan måske kigge på RestFB som et godt valg til et bibliotek at bruge.
Jeg er ikke sikker på, om det er effektivt, men det er en af de mulige måder at gøre det på:
Læs json fra url bruge url.openStream()
og læse indholdet i en streng.
konstruer et JSON-objekt med denne streng (mere på json.org)
JSONObject(java.lang.String source)
Construct a JSONObject from a source JSON text string.