我刚开始学习快速。所以,如果谈到迅捷,我就是一个菜鸟。为了尝试和实践它,我正在尝试为ios制作杂货申请。但是现在我被困在了最基本的东西之一,在没有使用库的情况下序列化JSON对象,所以只使用标准的swift代码。所以我的问题是你可以帮我解决我从api中获取数据的问题。
我正在使用邮递员检查我从api得到什么样的回复。当我到达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"
}
]
在我的快速代码中,我试图通过这样做来得到这个回应:
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,但这并没有解决我的错误。
有人会这么善意帮助我,所以我能够在我的代码中修复此错误吗?
答案 0 :(得分:0)
使用此简单代码获取jSon数组
let data = NSData(contentsOfURL: NSURL(string: "your URL")!)
let jsonArray: NSArray = try! NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as! NSArray
之后将此数组转换为NSDictionary并使用其值..转换为Dictionary的示例是
let cell = tableView.dequeueReusableCellWithIdentifier("atCell")! as UITableViewCell
let maindata = (data[indexPath.row] as! NSDictionary)
cell.textLabel?.text = maindata["date"] as? String
p.s我使用表格查看数据......