Frage zu JSON Attributen/Decodable

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Rabattcode für die heise MacDev 2020: Macoun20

Aufgrund der Corona-Krise: Die Veröffentlichung von Stellenangeboten und -gesuchen ist bis 31.12.2020 kostenfrei. Das beinhaltet auch Angebote und Gesuche von und für Freischaffende und Selbstständige.

  • Frage zu JSON Attributen/Decodable

    Hallo,
    weiß jemand, wie man folgende Struktur mit Attributen/Werten in einem Swift-Struct abbildet, das mit Attributen arbeitet:

    "Name": [{
    "@LanguageCode": "xx",
    "$": "Cologne - Cologne\/Bonn Airport"
    }, {
    "@LanguageCode": "de",
    "$": "Köln - Köln\/Bonn Flughafen"
    }, {
    "@LanguageCode": "pt",
    "$": "Colónia"
    }, {
    "@LanguageCode": "ja",
    "$": "ケルン - ケルン \/ ボン"
    }, {
    "@LanguageCode": "en",
    "$": "Cologne - Cologne\/Bonn Airport"
    }, {
    "@LanguageCode": "it",
    "$": "Colonia - Colonia-Bonn Airport"
    }, {
    "@LanguageCode": "fr",
    "$": "Cologne - Cologne\/Bonn Airport"
    }, {
    "@LanguageCode": "es",
    "$": "Cologne - Cologne\/Bonn Airport"
    }, {
    "@LanguageCode": "nl",
    "$": "Keulen"
    }]

    Danke im Voraus,
    Werner
  • Gibt nicht nur einen Weg dafür. Beispiel mit enum CodingKeys:

    C-Quellcode

    1. import Foundation
    2. struct Translation: Codable {
    3. var lang: String
    4. var value: String
    5. private enum CodingKeys: String, CodingKey {
    6. case lang = "@LanguageCode"
    7. case value = "$"
    8. }
    9. }
    10. let json = """
    11. [{
    12. "@LanguageCode": "xx",
    13. "$": "Cologne - Cologne/Bonn Airport"
    14. }, {
    15. "@LanguageCode": "de",
    16. "$": "Köln - Köln/Bonn Flughafen"
    17. }, {
    18. "@LanguageCode": "pt",
    19. "$": "Colónia"
    20. }, {
    21. "@LanguageCode": "ja",
    22. "$": "ケルン - ケルン / ボン"
    23. }, {
    24. "@LanguageCode": "en",
    25. "$": "Cologne - Cologne/Bonn Airport"
    26. }, {
    27. "@LanguageCode": "it",
    28. "$": "Colonia - Colonia-Bonn Airport"
    29. }, {
    30. "@LanguageCode": "fr",
    31. "$": "Cologne - Cologne/Bonn Airport"
    32. }, {
    33. "@LanguageCode": "es",
    34. "$": "Cologne - Cologne/Bonn Airport"
    35. }, {
    36. "@LanguageCode": "nl",
    37. "$": "Keulen"
    38. }]
    39. """.data(using: .utf8)!
    40. let decoder = JSONDecoder()
    41. let arr = try decoder.decode(Array<Translation>.self, from: json)
    42. for entry in arr {
    43. print("\(entry.lang) - \(entry.value)")
    44. }
    Alles anzeigen