Web APIからデータを取得したり、アプリ内で設定を保存したりするのに使われます。
この記事では、SwiftでJSONを扱う基本的な方法を初心者向けに簡単に説明していきます!
そもそもJSONとは?
JSONは "JavaScript Object Notation"の略で、簡単に言うとデータを人間にも読みやすく、コンピュータでも扱いやすい形で表現したテキストフォーマットです。
例:
{
"name": "Taro",
"age": 28,
"isStudent": false
}
まずSwiftでJSONを扱う準備
まずSwiftは標準でJSONの読み書きに便利なCodableプロトコルを使えます。また
Codableを使うと、JSONのデータとSwiftの構造体の相互変換が簡単にできます。
JSON → Swiftの構造体に変換(デコード)
1 JSONデータ
let jsonString = """
{
"name": "Taro",
"age": 28,
"isStudent": false
}
2 対応するSwiftの構造体を作る
struct Person: Codable {
let name: String
let age: Int
let isStudent: Bool
}
Codableをつけることで、自動的にJSONとの変換が可能になります!!
3 JSON文字列をデコードする
// JSON文字列をData型に変換
guard let jsonData = jsonString.data(using: .utf8) else {
fatalError("jsonDataに変換できません")
}
let decoder = JSONDecoder()
do {
// JSONをPerson型に変換
let person = try decoder.decode(Person.self, from: jsonData)
print("名前: \(person.name)")
print("年齢: \(person.age)")
print("学生か: \(person.isStudent)")
} catch {
print("JSONのデコードに失敗しました: \(error)")
}
Swiftの構造体 → JSONに変換(エンコード)
反対に、SwiftのデータをJSON形式の文字列に変換したい場合もあります!
let person = Person(name: "Hanako", age: 24, isStudent: true)
let encoder = JSONEncoder()
do {
let jsonData = try encoder.encode(person)
let jsonString = String(data: jsonData, encoding: .utf8)!
print(jsonString)
} catch {
print("JSONのエンコードに失敗しました: \(error)")
}
まとめ
-
JSONはデータをやり取りする際によく使われるテキスト形式
-
SwiftのCodableプロトコルを使うと簡単にJSONとの変換ができる
-
JSONDecoderでJSON → Swiftの構造体に変換(デコード)
-
JSONEncoderでSwiftの構造体 → JSONに変換(エンコード)
以上SwiftでびJSONの扱い方でした、ぜひ参考にしてみてください!🙌