I'm having a problem with NSJSONSerialization reading JSON from the Met Office Datapoint API.
I get the following error
Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Unable to convert data to string around character 58208.
I have checked and think this is the offending line according to the character position
{"id":"353556","latitude":"57.1893","longitude":"-5.0929","name":"Sóil Chaorainn"}
The JSON itself appears to be valid according to a couple of Validators I tried, and I would expect it too be from a large organisation such as Met Office.
Shouldn't NSJSONSerialization work fine with characters such as 'ó'?
If not how do I go about changing the encoding type to deal with this?
Many Thanks in Advance
The Met Office Datapoint sends back data in ISO-8859-1 which isn't one of the supported data format for NSJSONSerialization.
To make it work create a string from the URL content at first with NSISOLatin1StringEncoding and then create the NSData you want to use in the NSJSONSerialization with a NSUTF8 encoding.
The following works to create the corresponding json object
What is encoding for the JSON? JSON is supposed to UTF-8 but I have seen lousy APIs where they use ISO-8859-1. NSJSONSerialization only works UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE.