2017-12-18 14 views
-2

전적으로 네트워킹 및 구문 분석에 익숙하지 않습니다. 2 일 연속으로이 API의 항목을 표시하는 방법을 알아 냈습니다. http://api.alquran.cloud/quran/en.asad 예를 들어 모든 이름이나 API의 개체가 필요합니다.Swift를 사용하여 JSON 구문 분석하기

struct Result: Codable { 
    var number: [String:Int] 
    var text: [String:String] 
} 

struct Surahs: Codable { 
var data: Surah 

}

struct Surah: Codable { 
var surahs: [SurahItem] 

}

: 난 내 경우를 찾을 수 없습니다 솔루션을 인터넷을 서핑 0 지식과 내가 시도는 그 사람이 내 코드입니다 다음

}

enum CodingKey:String, Swift.CodingKey { 
case name = "name" 
case text = "text" 
case number = "number" 

}

import UIKit 
    class afasyVC: UIViewController { 

func jsonDecoding() { 
    let jsonUrlString = "http://api.alquran.cloud/quran/en.asad" 

    guard let url = URL(string: jsonUrlString) else {return} 
    URLSession.shared.dataTask(with: url) { (data, response, err) in 
     guard let data = data else {return} 
     do { 
      let quraanJsonStuff = try JSONDecoder().decode(SurahItem.self, from: data) 
      for numbers in [quraanJsonStuff] { 
       print(quraanJsonStuff) 
      } 
      } catch let jsonErr { 
      print("Error serializing json", jsonErr) 
     } 
     }.resume() 
} 
+0

안녕하세요, 안녕하세요. 코드를 디버그하기 위해 취한 단계와 문제가있는 곳을 정확히 설명하십시오 – Spangen

+0

"내게주는 열쇠가없는 값을 가진 arround를 재생할 때 감사합니다.", underlyingError : nil)) 및 때로는 디코더가 배열을 디코딩 할 것으로 예상되지만 사전이 발견되었습니다. – shehab

답변

1

스위프트 4의 JSONDecoder는 JSON 컬렉션 형식 변환 :

  • JSON 사전 {} 기민한 구조체/클래스.
  • Swift 배열에 대한 JSON 배열 []입니다.

는 JSON에 기재된 구조체 디코딩하고 인쇄 키 surahs


배열을 포함 키 data 대한 사전가 루트 개체에서

struct Root: Codable { 
    let code: Int 
    let status: String 
    let data : Surah 
} 

struct Surah: Codable { 
    let surahs: [SurahItem] 
} 

struct SurahItem: Codable { 
    let number: Int 
    let name: String 
    let englishName : String 
    // ... and so on 
} 

SurahItem 배열 쓰기

let root = try JSONDecoder().decode(Root.self, from: data) 
for surah in root.data.surahs { 
    print(surah.number, surah.name, surah.englishName) 
} 
+0

완벽하게 작동 THX 많이! – shehab