SwiftでJSON文字列を生成・パースする方法を徹底解説!CodableとJSONSerializationの基本
生徒
「先生、Swiftでアプリを作るときに、データをJSONっていう形式で扱うことが多いって聞いたんですけど、どうやって文字列にしたり読み込んだりするんですか?」
先生
「良いところに気がつきましたね。JSONはスマホアプリとサーバーがやりとりするときの標準的なデータ形式なんです。SwiftではCodableやJSONSerializationを使ってJSON文字列を簡単に扱えるんですよ。」
生徒
「なるほど!でも、プログラミング初心者の僕には少し難しそうに感じます…」
先生
「大丈夫ですよ。まずは基本から、わかりやすく順番に見ていきましょう!」
1. JSONとは何か?
JSON(ジェイソン)は「JavaScript Object Notation(ジャバスクリプト・オブジェクト・ノーテーション)」の略で、データをやりとりするための形式です。例えば、買い物リストをパソコンとスマホで共有するときに、人間にも読みやすく、コンピュータにも扱いやすい形で表現できるのがJSONです。
例えば次のように書きます。
{
"name": "Taro",
"age": 20,
"isStudent": true
}
これは「名前が太郎で、20歳で、学生です」という情報を表したJSONです。SwiftではこのようなJSONを文字列として扱ったり、逆に自分で作ったデータをJSONに変換したりできます。
2. SwiftでJSONを扱う方法は2種類
SwiftでJSON文字列を生成したり解析(パース)したりする方法は大きく分けて2つあります。
- Codable:Swiftの構造体やクラスをそのままJSONに変換したり、逆にJSONから自動的に変換する方法。
- JSONSerialization:もう少し低レベルな方法で、辞書型(Dictionary)などを使ってJSONを扱う方法。
初心者はまずCodableから学ぶと理解しやすいです。
3. CodableでJSONを生成してみよう
Codableは、Swiftの構造体やクラスをJSONに変換するための便利な仕組みです。例えば次のように書けます。
import Foundation
struct User: Codable {
let name: String
let age: Int
let isStudent: Bool
}
let user = User(name: "Taro", age: 20, isStudent: true)
if let jsonData = try? JSONEncoder().encode(user),
let jsonString = String(data: jsonData, encoding: .utf8) {
print(jsonString)
}
実行すると、次のようなJSON文字列が出力されます。
{"name":"Taro","age":20,"isStudent":true}
このように、SwiftのデータをそのままJSONにできるのでとても便利です。
4. CodableでJSONをパースしてみよう
次に、JSON文字列をSwiftの構造体に変換する方法です。これを「パース」と呼びます。
let json = """
{
"name": "Hanako",
"age": 18,
"isStudent": true
}
"""
if let jsonData = json.data(using: .utf8) {
let decoder = JSONDecoder()
if let user = try? decoder.decode(User.self, from: jsonData) {
print(user.name) // Hanako
print(user.age) // 18
}
}
このように、文字列から構造体に簡単に変換できます。アプリでサーバーから受け取ったデータを使うときによく使われます。
5. JSONSerializationで扱う方法
JSONSerializationはもっと直接的にJSONを扱う方法です。Swiftの辞書(Dictionary)や配列(Array)に変換します。
let jsonText = """
{
"title": "Swift入門",
"price": 1200
}
"""
if let data = jsonText.data(using: .utf8) {
if let jsonObject = try? JSONSerialization.jsonObject(with: data) as? [String: Any] {
print(jsonObject["title"] ?? "")
print(jsonObject["price"] ?? "")
}
}
この方法では、型を自分で確認しながら取り出す必要があります。そのため、初心者はまずCodableを使うのがおすすめです。
6. CodableとJSONSerializationの使い分け
まとめると次のように考えるとわかりやすいです。
- Codable:型安全で、アプリのモデル(構造体やクラス)と相性が良い。大半のケースでこちらがおすすめ。
- JSONSerialization:JSONの中身を一時的に確認したいときや、複雑な構造で型を決められないときに便利。
アプリ開発ではまずCodableを覚えておけば大丈夫です。
Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略
Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略
「iPhoneアプリを作りたいけれど、Macを持っていないから諦めている」そんな方のための画期的な入門講座です。実は、プログラミングの本質を学ぶのに高価な機材は必要ありません。本講座では、Windowsパソコンを使用し、クラウド環境を活用してAppleの最新言語Swift(スウィフト)の基礎を最短距離でマスターします。
Windowsで実現する開発環境
【つくるもの】
ブラウザ上で動作する「スマート・計算ツール」や「データ判定プログラム」をゼロから作成します。変数の扱いや条件分岐など、iPhoneアプリの内部で動くロジックを自分の手で構築する感動を体験してください。
【開発環境】
ブラウザだけでSwiftが動くプロ仕様のオンラインエディタ(Replit等)を使用します。面倒な設定は一切不要。今あるWindows PCで、プロのエンジニアと同じコードを書き始められます。
この60分で得られる3つの理解
OSの壁を越え、クラウドを活用してスマートに学習を開始する「現代的な開発スタイル」を習得します。
iPhoneアプリ特有のデータの扱い方や、Appleが推奨する「安全で美しいコード」の書き方を学びます。
将来的にiOSエンジニアとして副業・転職するために必要な準備や、Mac選びのポイントを伝授します。
※本講座は、将来的にiPhoneアプリ開発で収益化や転職を目指したい未経験者のためのエントリー講座です。マンツーマン形式により、Windows環境ならではの疑問にもその場でお答えし、あなたの理解度に合わせて進行します。
Windowsで始めるiPhoneアプリ開発入門