Skip to content

Instantly share code, notes, and snippets.

@lucahammer
Last active June 22, 2018 14:46
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lucahammer/1793a33a39cfa609be1c to your computer and use it in GitHub Desktop.
Save lucahammer/1793a33a39cfa609be1c to your computer and use it in GitHub Desktop.
get json, convert into map and output as html list German blogpost: http://www.2-blog.net/2014/08/14/summer-of-dart-json-via-http-abrufen-und-in-html-ausgeben
import 'dart:html';
import 'dart:async';
import 'dart:convert';
var host = "graph.facebook.com/v1.0"; //Facebook Graph API
var group = "229552893839458"; //Gruppe mit der ich aktuell arbeite
var url = "http://$host/$group"; //URL die Gruppeninfo als JSON zurückgibt
var data; //HTML Element, wo die Daten dargestellt werden
void main() {
querySelector('#load').onClick.listen(makeRequest); //Wartet darauf, dass auf den Load-Button geklickt wird, woraufhin die Infos geholt werden
data = querySelector('#json_content'); //Wählt das HTML Element, wo die Daten dargestellt werden.
}
/*void makeRequest(Event e) { //Einfacher get request
var path = url;
HttpRequest.getString(path)
.then(processString)
.catchError(handleError);
}*/
void makeRequest(Event e) { //sauberer http request
var path = url; //was abgerufen werden soll
var httpRequest = new HttpRequest(); //neues httpRequest Objekt
httpRequest
..open('GET', path) //es handelt sich um einen GET request
..onLoadEnd.listen((e)=> requestComplete(httpRequest)) //wenn alles geladen ist führe requestComplete aus
..send(''); //kann leer gesendet werden, da nur GET
}
requestComplete(HttpRequest request) {
if (request.status == 200) { //falls alles OK ist mach folgendes
processString(request.response); //verarbeite das geladene Ergebnis(JSON) mit processString
}
else { //falls nicht OK gib den Fehlercode aus
data.children.add(new LIElement()..text = 'Failed. Status={$request.status}');
}
}
processString(String jsonString) { //JSON verarbeiten
Map info = JSON.decode(jsonString); //Dekodiere den JSON String als eine Key-Value Map
//data.children.add(new LIElement()..text = info.toString()); //komplettes JSON in einfachen String umwandeln
data.children.add(new LIElement()..text = info['id']); //Value des Keys id als Listenelement ausgeben
data.children.add(new LIElement()..text = info['name']); //siehe oben
data.children.add(new LIElement()..text = info['description']);
data.children.add(new LIElement()..text = info['privacy']);
data.children.add(new LIElement()..text = info['icon']);
data.children.add(new LIElement()..text = info['updated_time']);
data.children.add(new LIElement()..text = info['email']);
/*for (int i = 0; i < info.length; i++) { //funktioniert nicht
var infoPunkt = info.;
data.children.add(new LIElement()..text = infoPunkt);
}*/
}
handleError(Error error) { //falls etwas schief läuft, sag dass etwas schief lief
data.children.add(new LIElement()..text = 'Request failed. $error');
}
@tosh
Copy link

tosh commented Aug 15, 2014

BTW: If you want to iterate over your Map to build the html list I think you can do something like this (from the top of my head):

for (var key in info.keys) {
  data.children.add(new LIElement()..text = info[key]);
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment