JSON Flashcards
Hvad står JSON for?
JavaScript Object Notation
Læs mere her: https://medium.com/swlh/how-to-work-with-json-in-swift-83cd93a837e
Hvad er Codable, Encodable og Decodable?
Encodable er protokollen som fortæller Swift at du gerne vil konvertere kode-objekter til JSON-objekter. Dette bruges typisk når man vil sende data til serveren.
Decodable er protokollen som fortæller Swift at du gerne vil konvertere JSON-objekter til kode-objekter. Dette bruges typisk når man vil modtage data fra serveren.
Codable er begge ting.
Hvad gør CodingKeys i det her kode?
~~~
{
“name”: “Josh”,
“age”: 30,
“full_name_of_person”: “Josh Smith”
}
struct Person: Codable {
var name: String
var age: Int
var fullName: String
enum CodingKeys: String, CodingKey { case name case age case fullName = "full_name_of_person" //this string value should match EXACTLY with the corresponding key in the JSON object } } ~~~
I Swift bruger man typisk camelCase.
Hvis det data man modtager ikke er camelCase, som fx full_ name_ of_ person, så kan man bruge CodingKeys til at konvertere det til camelCase når man modtager det fra serveren. Så det nu hedder fullName i stedet i ens model.
Hvilke to klasser bruger Swift til encode og decode?
JSONEncoder og JSONDecoder
Er der andre smarte måder at løse problemet som CodingKeys gør? Hint: jsonDecoder.keyDecodingStrategy
Her ses hvordan .keyDecodingStrategy kan bruges til at løse det samme problem
Swift er et typestærkt sprog i modsætning til JSON. Hvordan får man dem til at arbejde sammen?
Får ikke at miste typeinformationen, når konverterer til/fra JSON, opretter man klasser/structs til at repræsentere den ønskede datastruktur fx