>

다음과 같은 JSON이 있습니다 :

{
  success: true,
  message: null,
  messages: null,
  data: [
    [ ... ]
  ]
}

이제 궁금해서 다음과 같이 해결할 수 있습니다 :

struct Something: Codable {
    let data: [[Data]]
}
something.data.flatMap { $0 }

그러나 나는 오히려 :

struct Something: Codable {
    let data: [Data]
}

CodingKeys 세트로 JSON을 통해 탐색 할 수 있다는 것을 이미 알고 있습니다.  열거 형과 container.nestedContainer(...)  그러나 키가 없지만 배열에 배열 만 있으면 어떻게합니까? Decodable 의 사용자 정의 초기화로 이것을 달성 할 수 있습니까?  그렇다면 어떻게해야합니까?

  • 답변 # 1

    가능한 해결책은 배열을 평탄화하기위한 커스텀 이니셜 라이저를 작성하는 것입니다

    struct Root : Decodable {
        let success : Bool
        let data : [Foo]
        private enum CodingKeys : String, CodingKey { case success, data }
        init(from decoder: Decoder) throws {
            let container = try decoder.container(keyedBy: CodingKeys.self)
            success = try container.decode(Bool.self, forKey: .success)
            let arrayData = try container.decode([[Foo]].self, forKey: .data)
            guard !arrayData.isEmpty else {  throw DecodingError.dataCorruptedError(forKey: .data, in: container, debugDescription: "Object is empty")  }
            data = arrayData.first!
        }
    }
    struct Foo : Decodable { ... }
    
    

    Data  Foundation 프레임 워크에 존재합니다. 맞춤 유형으로 사용하지 않는 것이 좋습니다.

  • 이전 레일스 애플리케이션에서 잘못 정렬 된 HTML
  • 다음 swift - VC가 모달로 표시 될 때 탐색 모음 스타일이 변경되지 않습니다