2016-02-09 49 views

回答

3

在你的JSON quotes是一个数组,所以如果你要访问的第一个对象的quote你应该通过访问第一个对象做到这一点:

func getAPI() { 
     Alamofire.request(.GET, "http://quotes.rest/qod.json", parameters: ["contents": "quotes"]) 
      .responseJSON { response in 
       if let jsonValue = response.result.value { 
        let json = JSON(jsonValue) 
        if let quote = json["contents"]["quotes"][0]["quote"].string{ 
        print(quote) 
        } 
       } 
     } 
    } 
+0

惊人!感谢您的解释,它的效果很好,我明白了! – bandoy123

0

位于报价值。如果JSON的语法是不正确的,因为它完全打印反正你应该注意什么是错的。

func getAPI() { 
Alamofire.request(.GET, "http://quotes.rest/qod.json", parameters: ["contents": "quotes"]) 
    // JSON response 
     .responseJSON { response in switch response.result { 
     case .Failure(let error): 
      // got an error in getting the data, need to handle it 
      print("error calling GET, json response type :") 
      // print alamofire error code 
      let statusCode = error.code 
      print("error code json : \(statusCode)") 
      // print json response from server 
      if let data = response.data { 
       print("Response data: \(NSString(data: data, encoding: NSUTF8StringEncoding)!)") 
      } 
      // print http status code plus error string 
      print(NSHTTPURLResponse.localizedStringForStatusCode(statusCode)) 
      if let httpResponse : NSHTTPURLResponse = response.response { 
       print("HTTP Response statusCode: \(httpResponse.statusCode)") 
      } 
     case .Success(_): 
      let statusCode = (response.response?.statusCode)! 
      print("status code json : \(statusCode)") 
      print("there is a response json") 
      //print(value) 
      // parse the result as JSON, since that's what the API provides and save datas as new user in coreData 
      guard let data = response.data else { 
       print("Error parsing response data") 
       return 
      } 
      let json = JSON(data: data) 
      // access first element of the array 
      if let postContent = json["contents"]["quotes"][0]["quote"].string{ 
      // deal with json 
      } 
     } 
}