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

Fel i konvertering till json i test-apiet

Hej!

På testservern är det något tokigt i konverteringen till json för mig.

Förut kom texten mellan xml-taggarna som en #text-nyckel i en dictionary men på testservern är nyckeln en tom sträng (""). Detta är inte en dokumenterad förändring så jag antar att det inte är avsiktligt.

Se screenshot: http://t.co/wFRbW58JPI

Detta gäller reseplanerare.json-anropet.
T.ex.
http://samtrafiken-prod.apigee.net/sl/reseplane...<nyckel>&Time=18:16&Date=30.08.2013&S=1915&Z=9309

Mvh,
Torsten

Kommentarer

  • Hej Torsten!
    Tusen för att du går igenom och hittar brsiter. Vi ska titta på vad det kan bero på.

    / Lars

  • Hej,

    Denna bugg är fixad nu. Tack för att du rapporterade den!

    /Andreas

  • Torsten, du får jättegärna kolla att det fungerar som det borde nu.

    / Lars

  • Det verkar som att det problemet är löst nu, ja.

    Ska testa mer sen när jag lyckats konvertera om datan till utf-8 så den går att parse:a på iOS. Ni har inga funderingar på att ändra er och använda utf-8 (json-standard) för json-svar?

    /t

  • Vad bra Torsten!

    Angående fundering på encodingen så är svaret ja, i framtiden ska det lösas.
    Men tyvärr inte just nu.

    /Lars

  • Ok. Min app (ResOplaneraren) verkar funka utan problem när jag läser in svaret som isolatin1 och sen konverterar till utf-8 innan parsning. Detta gör ju däremot att den inte fungerar mot nuvarande server så jag ska försöka få till att uppdatering släpps på AppStore den 13:e.

    Det verkar däremot vara lite encodingproblem i viss trafikstörningsinfo i reseplanerare.json:
    http://freyhall.se/filer/encoding.png

    Fast rätt här (samma tecken):
    http://freyhall.se/filer/encodingok.png

  • När jag tittat lite närmre ser jag att felet berodde på hur jag tolkat api-datan och inte något fel på er sida. Jag har tydligen aldrig sett fler än ett rtu-meddelande per byte innan när jag testat.

    Allt gott alltså!
    /Torsten

  • Vad bra Torsten!

  • Vill bara säga stort TACK Torsten för tipset om först isolatin1 sen tillUTF8 på iOS. Tragglat en lång stund med att få till det, men nu funkar det! 😀

  • Ingen orsak, Per.
    Här är exempelkod om någon annan skulle behöva:

    Om man kör egen hämtning av requests t.ex. med NSOperation eller dispatch_async:

    NSURL *url = [NSURL urlWithString:<skapad request-url>]
    NSError *error;
    NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSISOLatin1StringEncoding error:&error];
    allowLossyConversion:YES];
    if (!error) {
    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding
    NSError *jsonError = nil;
    id JSON = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&jsonError];
    } else {
    // Hantera fel
    }

    // Använd JSON här t.ex. [JSON valueForKeyPath:@"HafasResponse.Trip"]

    Använder man t.ex. AFNetworking och får en callback med t.ex. NSData *response kan man istället använda
    NSString *jsonString = [[NSString alloc] initWithData:response encoding:NSISOLatin1StringEncoding];
    och sedan fortsätta som ovan

Kommentera eller skriv ett nytt inlägg

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