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
Följ inlägget
0
följare
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