SwiftとJSONを初めて使用していて、問題が発生しています。私はすべての種類のQ & Aを見て、アドバイスを取り入れようとしましたが、正しく行っていません。Swift JSONのシリアル化エラー
私は、JSONリントチェッカー(http://jsonlint.com)に従ってOKのJSONを生成しています。ブラウザを使用して
は、応答はこれです:
[{ "郵便番号": "NW4 2JL"}、{ "郵便番号": "NW4 2ES"}、{ "郵便番号": "NW4 3XP"} 、{"PostalCode": "NW4 2DH"}、{"PostalCode": "NW4 2HD"}、{"PostalCode": "NW4 2HD"}、{"PostalCode": "NW4 2DX"}]
Xcode ([PostalCode ":" NW4 2JL "}、{" PostalCode ":" NW4 2ES "}、{" PostalCode "}、JSONを解析できませんでした。 {NW4 2DH}}、{"NW4 2DH"}、{"NW4 2DH"}、{NW4 2DH} ])
私には何の不満があり、それについての説明はありません。「Optional()」部分です。その前に、エラー文は私が12行目(「sorry」という単語を含む唯一のメッセージ)に書いたものです。 '()'内のJSONは正常に見えます。
私はここで間違ったやり方を教えてもらえますか、または「オプション()」テキストがどこから来ているのでしょうか?
これは私のコードの関連部分である:この行では
let task = session.dataTaskWithRequest(request) { data, response, error in
guard data != nil else {
print("no data found: \(error)")
return
}
do {
if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments) as? NSDictionary {
let success = json["success"] as? Int
print("Success: \(success)")
} else {
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Error, sorry, could not parse JSON: \(jsonStr)")
}
} catch let parseError {
print(parseError)
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Error could not parse JSON: '\(jsonStr)'")
}
}
@ Eric D:オプションも一時的である可能性があります。彼らはスマートではないので、逆互換性の理由からではありません。 –
@IanBellオプションはスウィフトの重要なコンセプトで、Chris Lattnerはこれを何度も言っています。彼らはすぐにどこにも行かない。 :) – Moritz
うわーこのサイトはいいです。私がこれを投稿するとすぐに、私は答えを他のところで見つけました(http://stackoverflow.com/questions/8356842/how-to-use-nsjsonserialization)。本当に申し訳ありません。ソリューションはNSDictionaryの代わりにNSArrayを使用することでした。なぜなら、応答は配列だったからです。 – Denis