2017-10-27 3 views
0

신속한 프로젝트를 통해 URL을 게시하고 json에서 결과를 얻습니다. url의 json 응답에는 그리스 문자가 많이 포함되어 있습니다. 예를 들어 "Γ"대신 "\ U0393"이 표시됩니다. 어떻게 신속하게 이스케이프 문자를 번역 할 수 있습니까? 내 코드는 다음jsonSerialization에서 이스케이프 문자를 받고 Swift에서 디코딩 할 수 없습니다.

let url = NSURL(string: "https://www.something.that.creates.a.json.array")! 

    let task = URLSession.shared.dataTask(with: url as URL) { (data, response, error) -> Void in 
     if let urlContent = data { 
      do { 
       let jsonResult = try JSONSerialization.jsonObject(with: urlContent, options: JSONSerialization.ReadingOptions.mutableContainers) 
       print(jsonResult) 
      } catch { 
       print("Json Serialization error") 
      } 
     } 
    } 
    task.resume() 
+0

디버거에서 데이터를 볼 때 실제로 표시되는 것이 아니라 실제 데이터에서'\ U0393' 같은 것을 얻으셨습니까? 레이블에 실제 문자열을 표시하면 무엇을 볼 수 있습니까? – rmaddy

+0

흠, 레이블에서 테스트하지 않았습니다. 디버거에서만. – ToroLoco

+0

이것은 엄청난 json 결과이며 jsonResult [ "name"] 항목 만 선택할 수 없습니다. 오류를 반환합니다. 'Any'에는 아래 첨자가 없습니다. – ToroLoco

답변

0

rmaddy가 쓴 참으로 올바른 나타나는 이스케이프 문자. 그러나 배열 내에서 사전에 올바르게 액세스하려면 결과를 [[String : Any]]로 캐스팅해야했습니다.

let url = NSURL(string: "https://www.something.that.creates.a.json.array")! 

let task = URLSession.shared.dataTask(with: url as URL) { (data, response, error) -> Void in 
    if let urlContent = data { 
     do { 
      let jsonResult = try JSONSerialization.jsonObject(with: urlContent, options: JSONSerialization.ReadingOptions.mutableContainers) as! [[String : Any]] 
      print(jsonResult[0]["description"]) 
     } catch { 
      print("Json Serialization error") 
     } 
    } 
} 
task.resume() 
관련 문제