JSONDecoder.convertFromSnakeCase перестал работать в iOS 13? - PullRequest
0 голосов
/ 29 сентября 2019

После обновления до Xcode 11 / iOS 13 ранее работавшие модульные тесты не выполняются, поскольку JSONDecoder жалуется на отсутствие ожидаемых ключей.

JSON, который я пытаюсь проанализировать:

{
  "documentation_url": "http://www.discogs.com/developers/",
  "statistics": {
    "labels": 1420380,
    "releases": 11630155,
    "artists": 6465084
  },
  "hello": "Welcome to the Discogs API.",
  "api_version": "v2"
}

Тип, который я пытаюсь декодировать:

public struct DiscogsInfo: Codable {
    public var apiVersion: String?
    public var documentationUrl: URL
    public var hello: String
    public var statistics: Stats

    public struct Stats: Codable {
        public var labels: Int
        public var artists: Int
        public var releases: Int
    } 
}

Ошибка:

(lldb) po error
▿ JSONErr
  ▿ parseFailed : 1 element
    ▿ error : DecodingError
      ▿ keyNotFound : 2 elements
        - .0 : CodingKeys(stringValue: "documentationUrl", intValue: nil)
        ▿ .1 : Context
          - codingPath : 0 elements
          - debugDescription : "No value associated with key CodingKeys(stringValue: \"documentationUrl\", intValue: nil) (\"documentationUrl\")."
          - underlyingError : nil

И декодер:

(lldb) po jsonDecoder.keyDecodingStrategy
Foundation.JSONDecoder.KeyDecodingStrategy.convertFromSnakeCase

Единственное, о чем я могу думать, это то, что iOS 13 как-то игнорирует keyDecodingStrategy.

...