Я хочу, чтобы словарь my json string, но он не работает, мои коды ниже, кажется, все ясно, но когда я запускаю код, его ошибка (ошибка не могла разобрать JSONs: ошибка была выброшена, но не NSDictionary)Почему мой json не словарь?
let url :NSURL = WebService.singleWebAddress
let session = NSURLSession.sharedSession()
let request = NSMutableURLRequest(URL: url)
let paramString = ["AdsID": 41642] as Dictionary<String, Int>
request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(paramString, options:[])
request.HTTPMethod = "POST"
let err: NSError?
request.setValue("application/json ", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
let task = session.dataTaskWithRequest(request) { data, response, error in
guard data != nil else {
print("no data found: \(error)")
return
}
do {
let json = try! NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions())
// Okay, the `json` is here, let's get the value for 'success' out of it
if let adsList = json[0] as? [[String: AnyObject]] {
dispatch_async(dispatch_get_main_queue(), {() -> Void in
for adsItem in adsList {
if let id = adsItem ["ID"] as?Int, let carName = adsItem ["CarName"] as? String , let productionyear = adsItem["ProductionYear"]as?Int , let price = adsItem["Price"] as?Int , let mileage = adsItem["Mileage"] as?Int , let cityName = adsItem ["CityName"] as?String , let adsDate = adsItem["AdsDate"] as?String, let fuelType = adsItem["FuelTypeName"] as?String ,let image = adsItem["Image"]as?NSArray ,let gearBox = adsItem["GearBox"]as?String , let bodyStatus = adsItem["BodyStatus"] as?String , let bodyColor = adsItem["BodyColor"] as?String ,let insideColor = adsItem["InsideColor"]as?String , let isSold = adsItem["IsSold"]as?Bool , let numberPlate = adsItem["NumberPlateName"]as?String , let cellphone = adsItem["CellPhone"]as?String , let description = adsItem["Description"]as?String {
let singleads = SingleItem(id: id, image: image as! [String], carName: carName, productionYear: productionyear, price: price, mileage: mileage, cityName: cityName, adsDate: adsDate, fuelType: fuelType, gearBox: gearBox, bodyStatus: bodyStatus, bodyColor: bodyColor, insideColor: insideColor, isSold: isSold, numberPlateName: numberPlate, cellphone: cellphone, description: description)
}
}})
} else {
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding) // No error thrown, but not NSDictionary
print("Error could not parse JSONs: \(jsonStr!)")
}
} catch let parseError {
print(parseError) // Log the error thrown by `JSONObjectWithData`
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Error could not parse JSON: '\(jsonStr)'")
}
} .resume()
return task
}
Что мне делать?
Не используйте 'try!', Просто 'try', чтобы вы могли поймать ошибку и посмотреть, что это такое. Добавьте образец необработанной строки JSON к вопросу. – Wain
Как выглядит JSON? – smnk
@Wain Я делаю это, но не работает – HeyJay