Detta inlägg är gammalt och kan innehålla inaktuell information.

Knasig JSON-data för resrobot.se

Vi har fått in en fråga ifrån Peppe:

Har lite bök med JSON-datan jag får som retur från resrobot, dels search.json men även FindLocation.json har samma åkomma.

Ta en kik på http://pastebin.com/Pmk8Vhjs

Där så ser du/ni på rad 3 att detta segment har en array med segmentid:n i sig, vilket är helt ok.
Titta sedan på rad 141, där finns ett segment med bara ett segmentid i sig, och då finns ingen array längre, och detta tycker jag inte är okej. Det gör att man aldrig vet hur datan faktiskt ser ut och man får hela tiden köra if-satser för att kolla om man har med en array eller ej att göra med.

Mvh
Peppe

Kommentarer

  • Tack Peppe för att du gjort oss uppmärksamma på detta.
    Egentligen erbjuder inte resrobot JSON som utformat, utan det är en automatisk konvertering av XML till JSON som sker i vår API-proxy.
    Dessvärre har denna i dagsläget inte något stöd för att låsa att vissa noder alltid skall vara arrayer, även då de bara har ett element.

    Vi hoppas att detta är något som vår leverantör kommer att erbjuda i framtiden, men som det ser ut nu kan vi inte erbjuda detta dessvärre.

    / Lars Löfquist, Trafiklab

  • Peppe, får jag föreslå en (halvful) workaround som gör att du slipper lite av if-satserna? Gör en enkel funktion ensureArray() eller kanske bara arr() som tar ett argument och returnerar en array. Om det var en array returnerar den arrayen och annars wrappar den argumentet i en array. Då kommer koden funka också sedan dom fixat knaset. Fast du har iofs väl redan någon liknande lösning antar jag, men det skadar kanske inte att föreslå.

  • Peter: Tackar för tipset, just det hade jag inte tänkt på=)

  • Har inte detta "problem" fixats på över två år?

    Att tvinga mig som utvecklare att använda ett ful hack (till exempel det beskrivet ovan) alternativt att använda xml istället för json. Gör det inte bara svårare för mig, det blir även långsammare för slutanvändaren, speciellt om användaren sitter på mer begränsad hårdvara (exempelvis en mobiltelefon).

    Bifogad fil:

  • Hej!

    Vi för en diskussion med vår leverantör om detta.

    /Martin

    Team Trafiklab
  • Hej!

    Har nu fått ett svar från leverantören men tyvärr är det samma svar som Lars gav tidigare

    "Dessvärre har denna i dagsläget inte något stöd för att låsa att vissa noder alltid skall vara arrayer, även då de bara har ett element."

    Vi dokumenterar detta inför framtiden men tyvärr inget som vi kan erbjuda nu.

    /Martin

    Team Trafiklab
  • Har ni funderat på att byta leverantör?

  • Hej!

    Vi diskuterar möjligheten men fram tills något beslut är taget så ligger vi kvar hos nuvarande leverantör.

    /Martin

    Team Trafiklab

Kommentera eller skriv ett nytt inlägg

Ditt namn och inlägg kan ses av alla. Din e-post visas aldrig publikt.