私はすぐに学び始めました。それは迅速に来るならば、私はnoobです。それを試して練習するために、私はiosの食料雑貨のアプリケーションを作ろうとしています。しかし、今ではおそらく、最も基本的なもののうちの1つに取り組んでいます。標準のスウィフトコードだけでライブラリを使用せずにJSONオブジェクトをシリアライズしています。だから私の質問は、私がAPIから得たデータをシリアライズすることで私の問題を解決するのを助けることができます。SwiftでJSONをシリアル化しようとするとエラーが発生するのはなぜですか?
私はpostmanを使用して、どのような応答を私がapiから得るのかチェックしています。
私の迅速なコードで[
{
"id": 1,
"name": "Regular List"
},
{
"id": 2,
"name": "List for diner"
},
{
"id": 3,
"name": "List 3"
},
{
"id": 4,
"name": "List for next week"
},
{
"id": 6,
"name": "Test name"
}
]
私はこれを行うことによって、この応答を取得しようとしています:私は、APIを取得ないとき、これは私が得る応答である
func getBoodschapListJSON(){
let prefs:NSUserDefaults = NSUserDefaults.standardUserDefaults()
let userId = prefs.integerForKey("UserId")
let requestUrl = NSURL(string: "http://localhost:8080/api/lists/user/id/\(userId)")!
let session = NSURLSession.sharedSession()
let request = NSMutableURLRequest(URL: requestUrl)
request.HTTPMethod = "GET"
request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
session.dataTaskWithRequest(request, completionHandler: { (data, response, error) in
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)
//Here comes some code to try and process the JSON object in the table View.
} catch {
print("error serializing JSON: \(error)")
}
}).resume()
}
しかし、私は有効になったことはありません私はエラーで終わる応答: :キャラクターの周りに「エラーシリアライズJSONエラードメイン= NSCocoaErrorDomainコード= 3840 『無効な値0』のUserInfoは= {文字の周りNSDebugDescription =無効な値が0}」
私はそれことを期待しますJSONが適切ではないことと関係がありますNSJSONSerializationがそれを解釈できるようにしてください。しかし、私は確信していません、私はいくつかのスタックオーバーフローの投稿を見ている私と同じ質問があった。彼らのほとんどは.AllowFragmentsを使用すると言いましたが、それは私のエラーを解決しませんでした。
私のコードでこのエラーを修正できるように誰も私を助けることが親切だろうか?
サーバーからのjsonの形式が正しいかどうかを確認してください。 jsonlint.comやその他のjsonバリデーターでも同じことを確認できます。 –
@ArunGupta jsonlint.comでチェックしたところ、有効なjsonです。 "NSJSONSerialization.JSONObjectWithData(data!、options:.AllowFragments)"を試してみると、apiから返されたjsonをインタプリタできます。私は正しいパラメータを使用したと思っていますが、エラーが発生しやすいように私はnoobです。 – user3473161
「セットアップ」フォルダとAPIのコードを投稿できますか? – ntoonio