Sadece hızlı öğrenmeye başladım. Bu yüzden eğer hızlı gelirse bir noob'um. Denemek ve pratik yapmak için ios için bir bakkal uygulaması yapmaya çalışıyorum. Ama şimdi, muhtemelen standart hızlı kodla bir kütüphane kullanmadan JSON nesnesini serileştiren en temel şeylerden biri üzerinde sıkışıp kaldım. Bu yüzden benim sorum, api'den aldığım verileri serileştirerek problemimi çözmeme yardımcı olabilir.Swift'de JSON serileştirmeye çalışırken neden hata alıyorum?
API'dan ne tür bir yanıt aldığımı kontrol etmek için postacıyı kullanıyorum.
[
{
"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"
}
]
benim hızlı kodunda Bunu yaparak bu yanıt almak çalışıyorum:
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()
}
Ama geçerli bir got asla ben api'sine bir get yaptığınızda bu yanıtı alıyorum olduğunu Ben hata ile sona cevabı: : karakterin etrafında "hata seri JSON hata Alan = NSCocoaErrorDomain Kod = 3840 'Geçersiz değer 0.' UserInfo = {karakterin etrafında NSDebugDescription = Geçersiz değer 0.}"
bunu bekliyoruz JSON ile sağda olmamak için bir şey var NSJSONSerialization'un bunu yorumlayabilmesi için biçimlendirin. Ama emin değilim, elimde olduğu gibi aynı soruya sahip bir yığın yığma yazılarına baktım. Birçoğu .AllowFragments kullanmak için söyledi ama bu benim hatamı çözmedi.
Bana yardım edecek kadar nazik olabilir mi bu yüzden bu hatayı kodumda düzeltebilirim?
Lütfen json sunucunuzdan doğru biçimde hava durumunu kontrol edin. Aynı şeyi jsonlint.com adresinde veya başka bir json doğrulayıcısında kontrol edebilirsiniz. –
@ArunGupta jsonlint.com ile kontrol ettim, geçerli json. Benim şüphe vardı: "NSJSONSerialization.JSONObjectWithData (veri !, seçenekler: .AllowFragments) deneyin" yöntemi, api tarafından döndürülen json yorumlama yeteneğine sahip. Sanırım doğru parametreleri kullandım ama bir noob'um, böylece hatalar kolayca yapılabilir. – user3473161
"Kurulum" klasörünü ve API kodunuzu gönderebilir misiniz? – ntoonio