Переменная Struct для JSON в Swift - PullRequest
0 голосов
/ 14 апреля 2020

Здравствуйте, я использую JSON в моем сценарии таким образом:

//Top of Script

struct Runway: Decodable {
let ident1: String }

struct Runways: Decodable {
let runways: [Runway]

init(runways: [Runway]) {
    self.runways = runways
}
}

//Getting Values
let aero4 = try decoder.decode(Runways.self, from: data)
print(aero4.runways.ident1)

{ "runways": [
    {
      "ident1": "13R",

Так что выше выдает 13R. Теперь, как я могу структурировать свой код так, чтобы я мог получить любой json, скажем, если пользовательские типы LA, json вернется с first [] как [runwaysLA], так что в основном первый [] в JSON return всегда разные и переменные для ввода пользователя? Не совсем уверен, как использовать структуру с переменной

{ "runwaysLA": [
    {
      "ident1": "13R",

или

 { "runwaysBA": [
            {
              "ident1": "13C",

или

 { "runwaysWA": [
            {
              "ident1": "13L",

1 Ответ

1 голос
/ 14 апреля 2020

Одним из простых решений было бы исключить явную структуру Runways и выполнить синтаксический анализ непосредственно в словарь, например:

struct Runway: Decodable {
    let ident1: String
}

typealias Runways = [String: [Runway]]

do {
    let r = try JSONDecoder().decode(Runways.self, from: str.data(using: .utf8)!)

    // example: get the first ident from WA, if present
    if let rwa = r["runwaysWA"], !rwa.isEmpty {
        print(rwa[0].ident1)
    }
} catch {
    print(error)
}

...