JSONObject zurück geben
Den folgenden android-Anwendung, die code in Java-Ausgänge:
[{"handle":"DmitriyH","firstName":"Dmitriy","lastName":"Khodyrev","country":"Russia","city":"Moscow","organization":"KL","contribution":122,"rank":"master","rating":2040,"maxRank":"international master","maxRating":2072,"lastOnlineTimeSeconds":1432130513,"registrationTimeSeconds":1268570311}]}
beim extrahieren von Daten aus codeforces api- http://codeforces.com/api/user.info?handles=DmitriyH;
aber ich will nur "Vorname" des Benutzers.
Kann jemand empfehlen, änderungen an meinem code??
public class Http extends Activity {
TextView httpStuff;
HttpClient client;
JSONObject json;
final static String URL = http://codeforces.com/api/user.info?handles=;
@Override
protected void onCreate(Bundle savedInstanceState) {
//TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.httpex);
httpStuff = (TextView)findViewById(R.id.tvHttp);
client = new DefaultHttpClient();
new Read().execute("result");
}
public JSONObject lastSub(String username) throws ClientProtocolException, IOException, JSONException {
StringBuilder url = new StringBuilder(URL);
url.append(username);
HttpGet get = new HttpGet(url.toString());
HttpResponse r = client.execute(get);
//httpStuff.setText("xxx");
int status = r.getStatusLine().getStatusCode();
if(status == 200) {
HttpEntity e = r.getEntity();
String data = EntityUtils.toString(e);
JSONObject last = new JSONObject(data);
return last;
}
else {
Toast.makeText(Http.this, "error", Toast.LENGTH_SHORT);
return null;
}
}
public class Read extends AsyncTask <String, Integer, String> {
@Override
protected String doInBackground(String... arg0) {
//TODO Auto-generated method stub
try {
json = lastSub("avm12");
return json.getString(arg0[0]);
} catch (ClientProtocolException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
//TODO Auto-generated method stub
httpStuff.setText(result);
}
}
}
InformationsquelleAutor Avinash | 2015-05-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
BEARBEITEN
Gut besorgen Sie sich zunächst das root -
JSONArray
Dann in einer for-Schleife alle erforderlichen JSONObjects
Erwägen
&count=N
zu Ihrer url zur Begrenzung der Ausgabe, die erforderlich N Ergebnisse...unter der Annahme, dass
arg0[0]
parameter in dieser Zeilejson.getString(arg0[0]);
ist wahrscheinlich"firstName"
und sice Sie aufgefordert, änderungen an Ihrem code, den ich einfach geändert, diese ZeileJSONObject last = new JSONObject(data);
in IhremlastSub
Methode, um dieseJSONObject last = new JSONObject(data).getJSONArray("result").getJSONObject(0);
Vielen Dank. Ich habe es. Auf diese Weise extrahieren wir eine der mehreren Daten. Jetzt angenommen, ich bin über die url "codeforces.com/api/user.status?handle=avm12" und ich will zum extrahieren der ersten zehn( oder sagen wir n) "problem" - tags. Was sollte ich dann tun?
überprüfen Sie bitte mein edit.
Vielen Dank marco. Es war eine große Hilfe. Aber ich habe in anderes problem. Nun, dass ich abgerufen haben, diese Daten, ich will http-links dahinter (ich meine anklickbar gemacht, so dass Sie öffnen eine web-Seite geklickt haben). Wenn Sie können, helfen hier. Danke.
InformationsquelleAutor Marco Dufal
Ihrem ersten tag ist eine
JSONArray
so dass Sie brauchen, um eine Methode mit returnJSONArray
stattJSONObject
. Als Ihre Anforderung können Sie es überInformationsquelleAutor Piyush
Ihre komplette
JSONObject
enthält ein array mit den tag -"result"
, so sollten Sie extrahieren Sie den Vorname wie diese:Check mein edit..
InformationsquelleAutor CAS
In dem code, den Sie geschrieben, Ihr nicht die richtige URL.
Die folgenden Werke:
ja, aber Sie benutzt "Benutzer.status" anstelle von "user.info". "user.status" nicht enthalten, das Feld "Vorname"
Ja du hast Recht, ich habe nicht bemerkt, dass die url bearbeitet wurde..
InformationsquelleAutor Flaxie