0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SwiftでJSONの扱い方【初心者向け】

Posted at

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の扱い方でした、ぜひ参考にしてみてください!🙌

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?