Dit is misschien een domme vraag, maar wat is de eenvoudigste manier om JSON van URL te lezen en te parsen in Java?
In Groovy is het een kwestie van een paar regels code. Java voorbeelden die ik vind zijn belachelijk lang (en hebben enorme exception handling block).
Het enige wat ik wil doen is de inhoud van deze link lezen.
Met behulp van het Maven artefact org.json:json
kreeg ik de volgende code, die naar mijn mening vrij kort is. Niet zo kort als mogelijk, maar nog steeds bruikbaar.
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"));
}
}
Gebruik HttpClient om de inhoud van de URL op te halen. En gebruik dan de bibliotheek van json.org om de JSON te parsen. Ik'heb deze twee bibliotheken op vele projecten gebruikt en ze zijn robuust en eenvoudig te gebruiken.
Anders dan dat kun je proberen een Facebook API java bibliotheek te gebruiken. Ik heb geen ervaring op dit gebied, maar er is een vraag op stack overflow met betrekking tot het gebruik van een Facebook API in java. Je zou kunnen kijken naar RestFB als een goede keuze voor een bibliotheek om te gebruiken.
Ik weet niet zeker of dit efficiënt is, maar dit is een van de mogelijke manieren:
Lees json van url gebruik url.openStream()
en lees de inhoud in een string.
construeer een JSON object met deze string (meer op json.org)
JSONObject(java.lang.String source)
Construct a JSONObject from a source JSON text string.