2014-07-18 2 views
3

이것은 JSON을 얻는 코드입니다. 다른 질문 : http://binaenaleyh.net/dusor/에서 찾은이 URL로 작업 한 것입니다. 그러나이 URL과 함께 사용하면 http://www.netcampus.fr/api/schools, 전혀 작동하지 않습니다. "exc_breakpoint (코드 = exc_i386_bpt 서브 코드 = 0x0)"오류가 발생했습니다.Swift에서 JSON 가져 오기

내 코드가 잘못 되었습니까, 아니면 JSON 데이터입니까?

+0

같아야을 JSON에 대해서는 거의 없습니다. 작은 JSON 지식으로 최상위 배열과 최상위 수준 배열을 볼 수 있습니다. 소프트웨어 개발자가되는 것은 ** 작성한 코드와 ** 다른 사람들이 얻은 코드를 이해하는 것입니다. – zaph

답변

6

parseJSON 메서드는 두 번째 JSON을 구문 분석 할 때 충돌이 발생합니다. NSJSONSerialization 배열에 그 내용을 매핑하고 당신은 사전 기대 : 적어도를 얻기 위해 타인을 가지고 @reecon는 지적

var boardsDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(inputData, options: NSJSONReadingOptions.MutableContainers, error: &error) as NSDictionary // error here 
3

, 당신의 코드가이

//JSON Parsing 
func JSONParsingSample() { 

    var myData:NSData = getJSON("http://www.netcampus.fr/api/schools") 
    //println(myData) // show me data 
    var myDict:NSArray = parseJSON(myData) 
    println(myDict) 
} 
func getJSON(urlToRequest: String) -> NSData{ 
    return NSData(contentsOfURL: NSURL(string: urlToRequest)) 
} 

func parseJSON(inputData: NSData) -> NSArray{ 
    var error: NSError? 
    var boardsDictionary: NSArray = NSJSONSerialization.JSONObjectWithData(inputData, options: NSJSONReadingOptions.MutableContainers, error: &error) as NSArray 
    return boardsDictionary 
} 
//end 
-1
let urlString = "webAPI" 
    var request = URLRequest(url: URL(string: urlString)!) 

    let session = URLSession.shared 
    request.httpMethod = "GET" 
    session.dataTask(with: request) 

    { 
     data, response, error in 
     if error != nil 
     { 
      print(error!.localizedDescription) 
      return 
     } 

     do 
     { 


      let jsonResult: NSDictionary? = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as? NSDictionary 
      self.dict = jsonResult as! NSMutableDictionary 
      print("Synchronous\(jsonResult)") 

      DispatchQueue.main.async 
       { 

       let url = URL(string: ((((self.dict.value(forKey: "sources") as! NSArray).object(at: 5) as! NSDictionary).value(forKey: "urlsToLogos") as? NSDictionary)?.value(forKey: "small") as? String)!) 
       let data = try? Data(contentsOf: url!) 


      } 


         } 
     catch 
     { 
      print"error" 
     } 

     }.resume()