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

xml json skillnad i svarsstruktur

Jag försöker konvertera ett litet projekt till Realtidsinformation 3 APIet. Enligt dokumentationen ska jag få tillbaka en svarsstruktur som heter "ResponseData".

Men om jag gör en fråga med format XML får jag tillbaka "ResponseOfDepartures". Den i sin tur innehåller "ResponseData". Det går alltså utmärkt att komma runt det men det är lite olyckligt att dokumentationen inte stämmer. Enklast vore ju om XML även returnerade "ResponseData" som elementnamn på svaret.

Svaret (om formatet är XML) ser ut så här:

xsd : http://www.w3.org/2001/XMLSchema
xsi : http://www.w3.org/2001/XMLSchema-instance
StatusCode : 0
ExecutionTime : 0
ResponseData : ResponseData

Där saknas "Message" som enligt PI dokumentationen ska vara med....

Det känns som om man får olika datastruktrer beroende på om man använder JSON eller XML. verkar onödigt!

Kommentarer

  • Hej,

    Det är väll denna dokumentation det handlar om: https://www.trafiklab.se/api/sl-realtidsinforma... ?

    Under rubriken Resultat står det att man ska få en svarsstruktur som innehåller: StatusCode, Message, ExecutionTime och ResponseData. Vilket är det man får. I xml svaret så behöver dessa existera i en behållare. I xml så heter den behållaren ResponseOfDepartures, men då den inte nämns vid namn i json svaret, eller ger någon betydande hjälp att ha med i dokumentationen, så har vi inte nämnt den i dokumentationen heller.
    Gällande att Message inte är med i xml svaret så beror det på att den oftast har värdet null. Enligt den standard serializeringen som vi använder så gör det att den inte kommer med i xml svaret. Men när den har ett värde så kommer den att följa med.

    Gällande att json och xml svaret skiljer sig, så anser jag att det inte skiljer sig. Men det handlar mera om vad som är mest rätt.

    För json svaret så använder vi en även där en standard serializering. Resultatet blir som det är idag, vilket jag anser är "mest" rätt.
    Om man skulle ha svarsstrukturen:
    { ResponseOfDepartures: { Message: "", ResponseData: .... }}.
    Då skulle det effektivt bli ett objekt som innehåller ett objekt ResponseOfDepartures. Dvs ytterligare 1 root nivå.
    I xml svaret skulle det då behövas ytterligare ett objekt som wrapper runt ResponseOfDepartures för att motsvara json svaret, dvs:
    <objekt>
    <ResponseOfDepartures>
    ...
    </ResponseOfDepartures>
    </objekt>

  • Kan inte kommentera XML eftersom jag bara använder JSON. Jag tycker den nya JSON är mycket renare än den gamla. Tog mig inte många timmar att konvertera från R1, R2 och trafikläge1, till R3, Platsuppslag och trafikläge2. Den verkar också mer konsekvent med att alltid returnera en lista som en lista, men har inte vågat ta bort all den gamla koden som kontrollerar att så är fallet.

Kommentera eller skriv ett nytt inlägg

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