見出し画像

Swiftでアプリ。- JSONの使い方。デコード

まず基本的なこと。JSONというのは簡単に説明すると、

JavaScript Object Notation ・・・ JavaScriptのデータ交換フォーマット

JSONは今ではWebAPIなどで利用されJavaScript以外のいろんなプログラミング言語でも利用されています。

"エンコード" ・・・ 他データの型に変換する
"デコード" ・・・ もとに戻す

JSONではデータの受け渡しを簡単にするために使われているので実際に使うときには使える型に変換して使うことになります。

その変換が"デコード"ということになります。Swiftでの方法を確認していきます。参考サイトのJSONの例示です。

{
  "person": [
    {
        "name": "Ame Tsubaki",
        "age": 18,
        "hobby": ["旅行", "料理", { "web制作": ["HTML", "CSS", "php"] }]
    },
    {
        "name": "Yoshida Takashi",
        "age": 21,
        "hobby": ["読書", "ランニング", "テニス"]
    }
  ]
}

2種類のカッコで値を囲んだ構造になっています。

Swiftで使うときには文字コードがUTF-8のData型に変換(デコード)する必要があります。

例えということでJSON形式で変数を作ります。

var exJson = """
{
        "name": "Taro",
        "age": 17,
        "adress":"Japan"
}
"""

これをデータ型にするには

let data = String(exJson).data(using: .utf8)!

型を見てみます。

print(type(of: data))

とすると"Data"と出てきます。Data型になっています。

Swiftの場合は構造体を使ってそのデータを使えるようにしていきます

まず構造体をDecodableプロトコルに準拠させたものを月ります(Codableでも可)。

struct Person: Decodable {
    var name:String
    var age:Int
    var adress:String
}

変数で宣言したJSON形式のデータを使ってデコードします。

let data = String(exJson).data(using: .utf8)!

let person = try! JSONDecoder().decode(Person.self, from: data)

print(person.name) 

これで実行すると"Taro"というのが出てきます。このデータを使っていろんな処理ができるようになります。

SONで定義されていたデータをデコードする方法として

let person = try! JSONDecoder().decode(Person.self, from: data)

を実行して変数personには

Person(name: "Taro", age: 17, adress: "Japan")

が入ります。そしてnameのデータを取りたい場合には

person.name

ageのデータを取りたい場合には

person.age

となります。

この記事が気に入ったらサポートをしてみませんか?