ios - Swift: NSJSONSerialization.JSONObjectWithData() fails with JSON utf-8 -
my ios app needs download data dbms mysql utf-8 encoded, example:
{"id":"1","id_fish":"5","description_info":"come ricorda il nome, la colorazione del carapace di questo gambero \u00e9 rosa chiaro, che si fa pi\u00f9 intensa sul dorso. il corpo \u00e8 leggermente compresso lateralmente e possiede 13 paia di zampe. raggiunge la lunghezza di 18 cm. si riproduce in primavere e autunno. ","recognition_info":"la forma del gambero rosa \u00e8 molto simile agli altri decapodi come gambero rosso e lo scampo. si possono per\u00f2 facilmente differenziare in base alle dimensioni e al colore.","place_info":"oceano atlantico, tra portogallo e angola e tra massachusetts e guyana, e mar mediterraneo.","fishing_method":"rete strascico","buy_period":"estate - inverno"}
and here's code:
if let responsejson: [[string: string]] = (try? nsjsonserialization.jsonobjectwithdata(data!, options: nsjsonreadingoptions())) as? [[string: string]] { completionhandler(success: responsejson, error:nil) } else { print("error coding!") }
as can imagine, says "error coding" while if downloaded json ascii works well. missing?
the content of data
print(nsstring(data: data!, encoding: nsutf8stringencoding))
is:
optional({"id":"1","id_fish":"5","description_info":"come ricorda il nome, la colorazione del carapace di questo gambero \u00e9 rosa chiaro, che si fa pi\u00f9 intensa sul dorso. il corpo \u00e8 leggermente compresso lateralmente e possiede 13 paia di zampe. raggiunge la lunghezza di 18 cm. si riproduce in primavere e autunno. ","recognition_info":"la forma del gambero rosa \u00e8 molto simile agli altri decapodi come gambero rosso e lo scampo. si possono per\u00f2 facilmente differenziare in base alle dimensioni e al colore.","place_info":"oceano atlantico, tra portogallo e angola e tra massachusetts e guyana, e mar mediterraneo.","fishing_method":"rete strascico","buy_period":"estate - inverno"})
i use utf8_encode()
in php file!
your json object dictionary [string: string]
rather array [[string: string]]
.
i recommend use do - catch
block
do { let responsejson = try nsjsonserialization.jsonobjectwithdata(data!, options: nsjsonreadingoptions()) as! [string: string] completionhandler(success: responsejson, error:nil) } catch let error nserror { completionhandler(success: nil, error:error) }
Comments
Post a Comment