Парс Джсон Свифт - PullRequest
       8

Парс Джсон Свифт

0 голосов
/ 29 апреля 2019

Как получить информацию в формате json с числовыми элементами?Я должен быстро получать информацию в Json, но у меня есть элементы, которые являются числами, и я не знаю, как получить информацию из этих частей.

В моем Json мне удалось восстановить некоторую информацию, нетпроблемы.Но те, кто имеет название, состоит из числа, которое я не могу, потому что я не могу объявить переменную «1», например.Я беру название элемента в день, но я не знаю, как получить информационные баллы в 1 в рейтинге

URL-адрес Json: https://www.lnr.fr/flux/rankings?id_competition=prod2

class Classification: Codable {
    let channel : Channel
    let classification : [Day]

    init(channel: Channel ,classification: [Day] ) {
        self.channel = channel
        self.classification = classification
    }
}

class Channel: Codable {
    let title: String

    init (title: String) {
        self.title = title
    }
}

class Day: Codable {
    let day: day

    init(day: day) {
        self.day = day
    }
}

class day: Codable {
    let title: String
    let rankings : Equipe

    init(title: String, rankings: Equipe) {
        self.title = title
        self.rankings = rankings
    }
}

class Equipe: Codable {

    let club: Club
    let difference: String
    let points: String
    let points_marques: String
    let points_encaisses: String
    let nombre_matchs_joues: String
    let nombre_matchs_gagnes: String
    let nombre_matchs_nuls: String
    let nombre_matchs_perdus: String

    init(club: Club,difference: String, points: String, points_marques: String, points_encaisses: String, nombre_matchs_joues: String, nombre_matchs_gagnes: String, nombre_matchs_nuls: String, nombre_matchs_perdus: String) {

        self.club = club
        self.difference = difference
        self.points = points
        self.points_marques = points_marques
        self.points_encaisses = points_encaisses
        self.nombre_matchs_joues = nombre_matchs_joues
        self.nombre_matchs_gagnes = nombre_matchs_gagnes
        self.nombre_matchs_nuls = nombre_matchs_nuls
        self.nombre_matchs_perdus = nombre_matchs_perdus
    }
}

class Club: Codable {
    let name: String
    let url: logo

    init(name: String, url: logo) {
        self.name = name
        self.url = url
    }
}

class logo: Codable {
    let url: String

    init(url: String) {
        self.url = url
    }
}

Ответы [ 2 ]

2 голосов
/ 29 апреля 2019

Для этого вы можете использовать собственные CodingKeyscheckout Кодирование и декодирование пользовательских типов

Пример:

struct Foo: Codable {
    var bar: String
    var baz: Int

    enum CodingKeys: String, CodingKey {
        case bar = "1"
        case baz = "2"
    }
}

let json = "{\"1\":\"bar\",\"2\":\"baz\"}".data(using: .utf8)
let decoder = JSONDecoder()
let foo = try decoder.decode(Foo.self, from: json)
// foo.bar = 'bar'
// foo.baz = 'baz'

// this also works with encoding
let foo = Foo(bar: "MyBar", baz: "MyBaz")
// foo encodes to {"1":"MyBar", "2":"MyBaz"}

Вложенный пример struct FooBar: Codable {var foo: Foo var bar: String var baz: Int}

struct Foo: Codable {
    var bar1: String
    var bar2: String
    var bar3: String
    var bar4: String
    var bar5: String
    var bar6: String

    enum CodingKeys: String, CodingKey {
        case bar1 = "1"
        case bar2 = "2"
        case bar3 = "3"
        case bar4 = "4"
        case bar5 = "5"
        case bar6 = "6"
    }
}

Это то же самое, что и структура json:

{
  "foo": {
    "1": "One",
    "2": "Two",
    "3": "Three",
    "4": "Four",
    "5": "Five",
    "6": "Six"
  },
  "bar": "Barrr",
  "baz": "Bazz"
}
1 голос
/ 29 апреля 2019

Вы можете использовать CodingKeys

Пример:

struct MyModel: Codable {

    let first: String

    enum CodingKeys: String, CodingKey {
       case first = "1"
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...