Ergebnis 1 bis 6 von 6

Thema: Json

  1. #1
    Benutzer Avatar von zocka
    Registriert
    19.08.2010
    Alter
    25
    Beiträge
    63
    ManiaPlanet
    λx.x zocka
    Login: proni
    Nickname: λx.x zocka
    Zone: World » Europe » Germany » Baden-Württemberg » Karlsruhe
    ManiaLinks: mquery, mldrop, colorcombo, zockaml
    TrackMania
    aM » zocka
    Login: serverkennung United
    Nickname: aM » zocka
    Zone: World » Germany » Baden-Württemberg » Stuttgart
    ManiaLinks: zocka
    Links: TM-Ladder
    Blog-Einträge
    5

    Json

    Nach ernüchternd dummen Ansätzen meinerseits habe ich jetzt tatsächlich einen funktionierenden JSON Parser in Maniascript produziert. Mit der Funktionalität von HttpRequests in ManiaScript (und API Antworten, die vielleicht nicht alle nur XML sind), ist das vielleicht tatsächlich was sinnvolles Hab ich auch so noch nirgendwo gefunden, sonst hätte ich mir das nicht angetan...

    Das ganze Machwerk gibt es hier und in der ManiaScript Collection.
    Dokumentation mit Anwendungsbeispiel auch im GitHub wiki.

    Um einen schnellen Blick drauf zu werfen hier eine kleine Kostprobe:
    ManiaScript:
     
    declare myObject = JSON_Parse(jsonString);
    declare menu = JSON_GetObject(myObject, "menu");
    declare itemsArray = JSON_GetArray(menu, "items");
     
    for (i, 0, JSON_ArraySize(itemsArray) - 1) {
        if (JSON_IsNull(itemsArray, i))
            log("/////////////////////////////////////");
        else {
            declare item = JSON_GetObject(itemsArray, i);
            log(JSON_GetText(item, "id"));
            if (JSON_HasKey(item, "label"))
                log("  " ^ JSON_GetText(item, "label"));
        }
    }
     

    Spoiler: jsonString


    Den Umständen entsprechend finde ich es durchaus noch hinnehmbar

    Vielleicht findet es ja jemand nützlich.
    Geändert von zocka (25.01.2015 um 12:31 Uhr)

  2. #2
    Erfahrener Benutzer Avatar von Askuri
    Registriert
    21.11.2010
    Ort
    Rheinland-Pfalz
    Alter
    21
    Beiträge
    1.065
    ManiaPlanet
    ғιяе»λsκμяιֻ
    Login: askuri
    Nickname: ғιяе»λsκμяιֻ
    Zone: World » Europe » Germany » Rheinland-Pfalz » Trier
    Multiplayer: 18.629 (41.737 LP)
    Soloplayer: 48.498 (430 SP)
    ManiaLinks: mgames
    TrackMania
    ғιяе»λςκμяι
    Login: alder_player United
    Nickname: ғιяе»λςκμяι
    Zone: World » Germany » Rhineland-Palatinate » Trier
    Multiplayer: 4.569 (70.858 LP)
    Soloplayer: 33.983 (11.195 SP)
    ManiaLinks: im
    Links: TM-Ladder
    Blog-Einträge
    3
    Es gab bis jetzt noch keinen JSON Parser? :o Na dann ist es ja gut, dass es das mal gibt Gute Arbeit
    ManiaCDN.net: Der neue Hoster für deine Werke!

    Ab Sommer 2017 für 12 Monate in Ruanda als weltwärts-Freiwilliger.
    Interessierte können währenddessen auf meinem Blog vorbeischauen

  3. #3
    Hey,
    danke erstmal für das Script, das hilft mir im Moment sehr beim Auswerten von HTTP-Querys. Aber jetzt bin ich auf ein Problem gestoßen, ich hab mal einen das Ganze mal in einem ML vereinfacht:
    Code:
    <manialink>
    <include url="http://maniascript-collection.mania-community.de/?zocka/json" />
    <script><!--
    main() {
    	declare json_text = """{
    		"you":[{"time":"26421","sps":"100000"},{"time":"26017","sps":"100000"},"~",{"time":"26228","sps":"100000"},"~","~","~","~","~","~","~","~","~","~","~"],
    		"list":[
    			[{"nickname":"Konte","time":"26421"}],
    			[{"nickname":"Konte","time":"26017"}],
    			"~",
    			[{"nickname":"Konte","time":"26228"}],
    			"~","~","~","~","~","~","~","~","~","~","~"
    		]
    	}""";
    	declare json = JSON_Parse(json_text);
    	declare list = JSON_GetArray(json, "list");
    	
    	log("ArraySize list: "^JSON_ArraySize(list)); 
    	//log(JSON_GetType(list, 1));
    	//declare array = JSON_GetArray(list, 1);
    }
    --></script>
    </manialink>
    Das Array list hat seltsamerweise nur ein Element, obwohl es eigentlich 15 hat. Beim Array you klappt es übrigens auch, da wird 15 ausgegeben. Später soll das Ganze eigentlich auch noch erheblich größer werden, mit bis zu 10 Objekten in den darunterliegenden Arrays, wo gerade nur 1 ist.

    Über Lösungen wäre ich sehr dankbar Habe ehrlich gesagt nicht so viel Lust, mir den Code genau anzuschauen
    Signatur? Nein, danke.

  4. #4
    Benutzer Avatar von zocka
    Registriert
    19.08.2010
    Alter
    25
    Beiträge
    63
    ManiaPlanet
    λx.x zocka
    Login: proni
    Nickname: λx.x zocka
    Zone: World » Europe » Germany » Baden-Württemberg » Karlsruhe
    ManiaLinks: mquery, mldrop, colorcombo, zockaml
    TrackMania
    aM » zocka
    Login: serverkennung United
    Nickname: aM » zocka
    Zone: World » Germany » Baden-Württemberg » Stuttgart
    ManiaLinks: zocka
    Links: TM-Ladder
    Blog-Einträge
    5
    Zitat Zitat von Konte Beitrag anzeigen
    Habe ehrlich gesagt nicht so viel Lust, mir den Code genau anzuschauen
    Ich ja auch nicht, was glaubst du, warum das so aussieht

    Der Unterschied an den beiden Arrays, den ich sehe, ist dass das zweite eine Liste von Listen ist und ich glaube daran geht mein parser etwas kaputt. Ich hatte auch schonmal geguckt, warum, aber wenn das Problem noch nicht behoben ist, konnte ich es offensichtlich nicht nachvollziehen bzw. lösen ^^

    In dem ManiaCalendar Projekt, habe ich z.B. declare FixedData=TextLib::Replace(_Result,"]}","] }");, was ich dann zum parsen gebe. Das Problem scheint hier zwar etwas ein anderes, aber vielleicht lässt sich die Sache mit irgendwas wie "}]," -> "}] ," hotfixen :/

    Auf die Schnelle kann ich leider auch nicht sagen, wo genau das Problem zu finden ist, vermutlich wird irgendwo der index des aktuellen Zeichens nicht richtig angepasst und das tatsächliche Ende der Liste nicht erkannt (https://github.com/PRGfx/mQscripts/b...cript.txt#L259 sowas in der Art).

    PS: Ich weiß aber auch generell nicht, ob sich das für allzu ambitionierte Datensätze eignet, weil das dann doch irgendwann merklich langsamer wird.
    Geändert von zocka (09.02.2016 um 15:00 Uhr)

  5. #5
    Ich hab ein paar Variationen mit Replace versucht, das hat leider nichts gebracht. Aber danke trotzdem Ich hab das ganze jetzt auf mehrere Querys aufgeteilt.
    Signatur? Nein, danke.

  6. #6
    Benutzer Avatar von zocka
    Registriert
    19.08.2010
    Alter
    25
    Beiträge
    63
    ManiaPlanet
    λx.x zocka
    Login: proni
    Nickname: λx.x zocka
    Zone: World » Europe » Germany » Baden-Württemberg » Karlsruhe
    ManiaLinks: mquery, mldrop, colorcombo, zockaml
    TrackMania
    aM » zocka
    Login: serverkennung United
    Nickname: aM » zocka
    Zone: World » Germany » Baden-Württemberg » Stuttgart
    ManiaLinks: zocka
    Links: TM-Ladder
    Blog-Einträge
    5
    Ich denke, ich habe den Fehler gefunden und behoben. Ich bekomme jetzt mit deinem Datensatz jedenfalls auch für "list" 15 Elemente

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •