ISBN-Best: Frage zu Json und InetRead vs GET

  • Hi!

    Vorneweg: Bin zwar kein Anfänger mehr aber hab trotzdem noch einen weiten Weg vor mir, vor allem bis ich endlich mal schnell und flüssig Programmieren kann und nicht mehr einen Tag für das brauche, was manche Profis hier in einer Stunde oder weniger schreiben.
    Für das Projekt "ISBN-Best" bin ich noch in der Konzeptionsphase, d.h. es gibt noch nicht wirklich viel Code sondern ich überlege noch wie ich es am geficktesten einschädele.

    Hier mal eine Frage zu einem der Probleme:

    Um an Daten zu kommen, möchte ich die Google Book-API abfragen.
    Als Ergebnis bekommt man einen JSON-String, den möchte ich weiter verarbeiten indem ich die Ergebnisse in einer GUI-basierten Liste anzeigen lasse inkl. Vorschaubild etc.

    Meine Frage bezieht sich auf den Aufruf und die Organisation der Daten:

    Was ist besser/schnelller/praktischer:

    Spoiler anzeigen


    Variante A

    [autoit]

    $result = InetRead("https://www.googleapis.com/books/v1/volumes?q=isbn:9783499600746")
    ConsoleWrite(BinaryToString($result, 4))

    [/autoit]


    oder Variante B

    [autoit]

    $json = ObjCreate("Microsoft.XMLHTTP")
    $json.Open("GET", "https://www.googleapis.com/books/v1/volumes?q=isbn:9783499600746", 0)
    $json.Send
    $result = $json.responseText
    ConsoleWrite((BinaryToString($result, 4))

    [/autoit]


    Ist es bei Variante B möglich eine For.... In ... Next Schleife zu verwenden?

    Wie sind die Daten zu Organisieren? Würde Sie gerne in ein Array einlesen wo in [0][$i] die Anzahl der Gefundenen Medien sowie die "Überschriften eingetragen sind (JSON-Result: "totalItems": x) und dann pro Zeile alle Elemente des Mediums wie Titel, Autor, ISBN10, ISBN13, etc (Nebenfrage, kann ich auch die Thumbnails der Medien im Array speichern und von dort aus aufrufen um sie in der GUI anzeigen zu lassen?)

    Würde man da mit RegExp arbeiten oder _StringBetween bzw. StringInString?

    Vielen Dank für Eure Anregungen!

  • Das ist mehr eine persönliche Sache zwischen InetRead() und mir.
    Vor ein paar Wochen hab ich mit mehreren APIs kommunizieren müssen. Ich weiss nicht mehr genau bei welcher ich Probleme hatte, es könnte aber die von boxnet gewesen sein. Einige Requests per INetRead() lieferten dabei kein Ergebnis während es per Object problemlos funktionierte. Bei dem Request wurde nichts ungewöhnliches übergeben, lediglich der API Key, ein Auth-Token und ein simpler Sring der den gewünschten response definierte. Ich weiß nicht warum und weshalb das über InetRead() nicht funktionierte aber die Fehlersuche war sehr nervig. Seitdem lass ich gern die Finger von InetRead() wenn es darum geht, Parameter zu übergeben. Die par Zeilen extra schreib ich dann gern.

    Aber ja - ich sollte Andere nicht durch meine persönlichen Aversion gegen bestimmte Funktionen beeinflussen. Benutz ruhig InetRead() Hakeem, wenn's denn bei dir funktioniert :)

  • Danke für euer Feedback und die spannende Diskussion, die zeigt wieviel Leidenschaft oft drinsteckt :D

    Gibt es ausser persönlichen Vorlieben noch Vor- und Nachteile (Geschwindigkeit, Weiterverarbeitung) bei den zwei Varianten? Insbesondere die Frage

    Zitat


    Ist es bei Variante B möglich eine For.... In ... Next Schleife zu verwenden?

    konnte ich selbst noch nicht beantworten - habe aber die letzten Tage auch nicht wirklich daran gearbeitet :whistling:

    Noch eine Bonusfrage zu den Objekten: gibt es einen einfachen oder wenigstens übersichtlichen Weg z.B. mittels eines Tools herauszufinden, welche Methoden ich bei einem Objekt anwenden kann? Bisher habe ich immer abgeschrieben oder in der MSDN-Library geschaut. Das artet aber oft aus und erfordert viel Nachschauen an weiteren Stellen...

    Den JSON-Parser von SEuBo hatte ich gesehen, allerdings noch nicht bis ins letzte Detail verstanden. Im Prinzip macht er aber das, was ich selbst vorhatte: den Text per RegEx zu durchstöbern. Mein Gefühl sagt mir aber, dass das nicht die schnellste oder beste Variante ist... (ja ja ich kenne Loriot und den Disput über Gefühle beim Eierkochen). Falls niemand einen anderen Ansatz kennt würde ich den halt an meine Bedürfnisse anpassen und hätte den Vorteil in vereinfachen zu können, da mein JSON direkt am Anfang angibt, wieviele Items es gibt.

    Code
    {
     "kind": "books#volumes",
     "totalItems": 2,
     "items": [