Μπορεί να είναι χαζή ερώτηση, αλλά ποιος είναι ο απλούστερος τρόπος για να διαβάσετε και να αναλύσετε JSON από URL σε Java;
Στην Groovy, είναι θέμα λίγων γραμμών κώδικα. Τα παραδείγματα της Java που βρίσκω είναι γελοία μεγάλα (και έχουν τεράστιο μπλοκ χειρισμού εξαιρέσεων).
Το μόνο που θέλω να κάνω είναι να διαβάσω το περιεχόμενο του αυτού του συνδέσμου.
Χρησιμοποιώντας το τεχνούργημα Maven org.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"));
}
}
Χρησιμοποιήστε το HttpClient για να αρπάξετε τα περιεχόμενα της διεύθυνσης URL. Και στη συνέχεια χρησιμοποιήστε τη βιβλιοθήκη από το json.org για να αναλύσετε το JSON. Έχω χρησιμοποιήσει αυτές τις δύο βιβλιοθήκες σε πολλά έργα και ήταν εύρωστες και απλές στη χρήση.
Εκτός από αυτό μπορείτε να δοκιμάσετε να χρησιμοποιήσετε μια βιβλιοθήκη java του Facebook API. Δεν έχω εμπειρία σε αυτόν τον τομέα, αλλά υπάρχει μια ερώτηση στο stack overflow που σχετίζεται με τη χρήση ενός Facebook API σε java. Ίσως να θέλετε να εξετάσετε το RestFB ως μια καλή επιλογή για μια βιβλιοθήκη που μπορείτε να χρησιμοποιήσετε.
Δεν είμαι σίγουρος αν αυτό είναι αποτελεσματικό, αλλά αυτός είναι ένας από τους πιθανούς τρόπους:
Χρησιμοποιήστε url.openStream()
και διαβάστε τα περιεχόμενα σε μια συμβολοσειρά.
κατασκευάστε ένα αντικείμενο JSON με αυτό το αλφαριθμητικό (περισσότερα στο json.org)
JSONObject(java.lang.String source)
Construct a JSONObject from a source JSON text string.