• Guten Abend,


    mir ist aktuell aufgefallen das es ein kleines Problem in der Galaxiekarte, zumindest bei mir, im GeNeSIS5 gibt.

    Ich war mal wieder etwas aktiv und habe im si-archive mal das uni eingetragen. dabei fiel mir auf das 2 Systeme seit dem 2023-11-15 sich nicht mehr aktualisiert hatte.

    Also schnell mal nachgesehn woran es lag und dabei fiel mir auf das json ungewöhnlich war.


    in denn Systemen 5:191 und 5:192 wird mir es wie folgt ausgegeben:

    Code
    { "info" : { "si" : "classic", "v" : 1, "user" : { "userID" : 5, "nickname" : "Jaroba"} , "type" : "galaxy-overview", "universe" : { "id" : 40} , "ts" : 1707591656.824} , "position" : { "galaxy" : 5, "system" : 191} , "hole" : false, "planets" : { "0" : { "id" : 28641, "coords" : "05:191:01", "emptyPosition" : true} , "1" : { "id" : 28642, "coords" : "05:191:02", "emptyPosition" : true} , "2" : { "isEventPlanet" : false, "id" : 28643, "position" : 3, "p" : { "x" : 58, "y" : 356, "x2" : 58, "y2" : 356} , "color" : "#cacaca", "temperature" : -39, "coords" : "05:191:03", "name" : "", "image" : 17, "ring" : 0, "size" : 37, "uid" : 0, "user" : false, "rubblefield" : { "0" : 0, "1" : 0, "2" : 0, "3" : 0} , "rubbles" : null, "hasAstro" : false, "moon" : { "id" : null, "skin" : null} , "isRaid" : 0, "fav" : { } } , "3" : { "id" : 28644, "coords" : "05:191:04", "emptyPosition" : true} , "4" : { "id" : 28645, "coords" : "05:191:05", "emptyPosition" : true} , "5" : { "isEventPlanet" : false, "id" : 28646, "position" : 6, "p" : { "x" : 156, "y" : 256, "x2" : 156, "y2" : 256} , "color" : "#cacaca", "temperature" : 7, "coords" : "05:191:06", "name" : "", "image" : 25, "ring" : 0, "size" : 32, "uid" : 0, "user" : false, "rubblefield" : { "0" : 0, "1" : 0, "2" : 0, "3" : 0} , "rubbles" : null, "hasAstro" : false, "moon" : { "id" : null, "skin" : null} , "isRaid" : 0, "fav" : { } } , "6" : { "id" : 28647, "coords" : "05:191:07", "emptyPosition" : true} , "7" : { "isEventPlanet" : false, "id" : 28648, "position" : 8, "p" : { "x" : 417, "y" : 385, "x2" : 417, "y2" : 385} , "color" : "#c9d324", "temperature" : 81, "coords" : "05:191:08", "name" : "0001-x", "image" : 53, "ring" : 0, "size" : 32, "uid" : 355, "user" : { "id" : 355, "nickname" : "WORUS", "title" : "%name%", "status" : "inactive", "statusName" : "Inaktiv", "lang" : "<img src=\"/img/global/flags/pl.png\" title='Poland'>", "spec" : { "0" : 2, "1" : 0, "2" : 0, "3" : 0} , "ranking" : 3894, "spice" : 5092860, "alliance" : false} , "rubblefield" : { "0" : 0, "1" : 0, "2" : 0, "3" : 0} , "rubbles" : null, "hasAstro" : false, "moon" : { "id" : null, "skin" : null} , "isRaid" : 0, "fav" : { } } , "8" : { "id" : 28649, "coords" : "05:191:09", "emptyPosition" : true} , "9" : { "id" : 28650, "coords" : "05:191:10", "emptyPosition" : true} , "10" : { "isEventPlanet" : false, "id" : 28651, "position" : 11, "p" : { "x" : 499, "y" : 269, "x2" : 499, "y2" : 269} , "color" : "#cacaca", "temperature" : 53, "coords" : "05:191:11", "name" : "", "image" : 44, "ring" : 0, "size" : 32, "uid" : 0, "user" : false, "rubblefield" : { "0" : 0, "1" : 0, "2" : 0, "3" : 0} , "rubbles" : null, "hasAstro" : false, "moon" : { "id" : null, "skin" : null} , "isRaid" : 0, "fav" : { } } , "11" : { "isEventPlanet" : false, "id" : 28652, "position" : 12, "p" : { "x" : 639, "y" : 343, "x2" : 639, "y2" : 343} , "color" : "#c9d324", "temperature" : -13, "coords" : "05:191:12", "name" : 0004, "image" : 1, "ring" : 0, "size" : 32, "uid" : 355, "user" : { "id" : 355, "nickname" : "WORUS", "title" : "%name%", "status" : "inactive", "statusName" : "Inaktiv", "lang" : "<img src=\"/img/global/flags/pl.png\" title='Poland'>", "spec" : { "0" : 2, "1" : 0, "2" : 0, "3" : 0} , "ranking" : 3894, "spice" : 5092860, "alliance" : false} , "rubblefield" : { "0" : 0, "1" : 0, "2" : 0, "3" : 0} , "rubbles" : null, "hasAstro" : false, "moon" : { "id" : null, "skin" : null} , "isRaid" : 0, "fav" : { } } , "12" : { "isEventPlanet" : false, "id" : 28653, "position" : 13, "p" : { "x" : 488, "y" : 126, "x2" : 488, "y2" : 126} , "color" : "#cacaca", "temperature" : 8, "coords" : "05:191:13", "name" : "", "image" : 19, "ring" : 0, "size" : 32, "uid" : 0, "user" : false, "rubblefield" : { "0" : 0, "1" : 0, "2" : 0, "3" : 0} , "rubbles" : null, "hasAstro" : false, "moon" : { "id" : null, "skin" : null} , "isRaid" : 0, "fav" : { } } , "13" : { "id" : 28654, "coords" : "05:191:14", "emptyPosition" : true} , "14" : { "isEventPlanet" : false, "id" : 28655, "position" : 15, "p" : { "x" : 542, "y" : 48, "x2" : 542, "y2" : 48} , "color" : "#cacaca", "temperature" : -39, "coords" : "05:191:15", "name" : "", "image" : 23, "ring" : 0, "size" : 37, "uid" : 0, "user" : false, "rubblefield" : { "0" : 0, "1" : 0, "2" : 0, "3" : 0} , "rubbles" : null, "hasAstro" : false, "moon" : { "id" : null, "skin" : null} , "isRaid" : 0, "fav" : { } } , "15" : { "isEventPlanet" : false, "id" : 28656, "position" : 16, "p" : { "x" : 605, "y" : 205, "x2" : 605, "y2" : 205} , "color" : "#cacaca", "temperature" : -9, "coords" : "05:191:16", "name" : "", "image" : 13, "ring" : 0, "size" : 27, "uid" : 0, "user" : false, "rubblefield" : { "0" : 0, "1" : 0, "2" : 0, "3" : 0} , "rubbles" : null, "hasAstro" : false, "moon" : { "id" : null, "skin" : null} , "isRaid" : 0, "fav" : { } } } }

    Normal sieht es ja wie bekannt so aus:


    mfg Jaroba

  • Das liegt in SI üblicherweise daran, dass ein Name (evtl. auch eine Allianz) komplett aus Zahlen besteht und mit einer Null beginnt. Das ist laut JSON Spezifikation nicht erlaubt.

    In diesem Fall ist es

    Code
    "coords" : "05:191:12", "name" : 0004,

    Die naheliegende Lösung wäre es, Textfelder fest als String zu deklarieren.

    Code
    "coords" : "05:191:12", "name" : "0004",

    vermeidet das Problem.

    • Official Post

    Nur um das kurz an der Stelle hier zu sagen, das wird als String bereits übermittelt. Die Übertragung der Galaxie-Daten sind ja auch bereits JSON's (in meinem Format) die ich dann für die Tools nur weitergebe.

    Bedeutet, hier wirft die JSON.stringify eine Exception die ich dann mit "meiner" eigenen JSON.encode Funktion versuche zu umgehen. Deswegen ist das dann auch nicht mehr formatiert. Jetzt kann ich meiner JSON.encode Funktion das natürlich beibringen, das es keine Zahl ist, wenn eine Führende Null (und Kein direkter Dezimalpunkt anschließend) vorhanden ist, aber das ist auch leichter gesagt als getan.

    Für JavaScirpt ist an dieser Stelle "0004" eine Zahl. Hier kann man nicht einfach (bzw. will ich das auch nicht) einen Hack für irgendwelche Allianz-Namen einbauen, weil als nächstes ist es dann der Planet oder sonst was.


    Vom Eingangspost muss ich dann ausgehen das der JSON String oben so nicht funktioniert?

  • Leg dir einfach einen Nutzer an, dessen Name nur aus Zahlen besteht und mit einer Null beginnt, gründe eine Allianz mit entsprechendem Namen, benenne deine Planeten entsprechend, ... (du kannst ja als Entwickler evtl. vorhandene Validatoren unterdrücken).


    *edit*

    Ich kann das im Test -Uni nicht nachvollziehen, da funktioniert alles.

  • Hi das Ganze ist mir auch schon öfter aufgefallen, also hab ich grad mal 1-2Minuten investiert um ein Beispiel zu suchen.

    Konkret: Nexus Uni 1:67, 1:145, 1:159, sind die Json strings alle bricked.

    Gemeinsamkeit: In dem Fall in allen dreien sitzt der selbe Spieler mit speziellem Namen, der den Json string bricked, weil die Encoder den Backslash im Spielernamen als Escape-character Sequenz interpretieren.

    • Official Post

    Hi das Ganze ist mir auch schon öfter aufgefallen, also hab ich grad mal 1-2Minuten investiert um ein Beispiel zu suchen.

    Konkret: Nexus Uni 1:67, 1:145, 1:159, sind die Json strings alle bricked.

    Gemeinsamkeit: In dem Fall in allen dreien sitzt der selbe Spieler mit speziellem Namen, der den Json string bricked, weil die Encoder den Backslash im Spielernamen als Escape-character Sequenz interpretieren.

    danke, so einen Fehler hätte ich mit meinen Tests sicherlich nicht gefunden. Ich bin jedes Mal überrascht was ich nicht alles für Zeichen so erlaube bei der Registrierung.


    Ist gefixt

  • Hi Dschi, ich bin mal wieder beiläufig über einen kaputten Json string gestolpert.

    Nexus 1:196

    Bei einem der Spieler fehlen die Gänsefüßchen um das nickname Feld, das bricked wohl den Parser.
    Warum ist für mich aber nicht ersichtlich, der Name selbst sieht auf den ersten Blick ziemlich unspektakulär aus.

  • Im Gen habe ich in der Zeit auch wieder ein paar gefunden.


    5:31....
    evtl. sollte sich der Spieler dazu angesehen werden. da ich denke das es von dem namen liegt. denn da wo sich der spieler niedergelassen hat tritt der fehler jedesmal auf