概要
JSON でローカルに保存したファイルを開いて構造体にシリアライズする方法です 今回はルートドキュメントが配列の場合をシリアライズする方法を紹介します
環境
- macOS 11.4
- Xcode 12.5.1
サンプルコード
test.json は配列内に JSON データ入っていることを想定しています
例えば以下のようなファイルとします
[
{
"title": "xxx",
"content": "xxx",
}
]
まず JSON 部分の構造体を作成します キー名と変数名を合わせるのがポイントです
struct ArticleEntity: Codable {
var title: String
var content: String
}
そして JSONDecoder.decode
を使ってシリアライズします
ファイルは Data オブジェクトとして渡ってくるのでそのまま渡します
この際にシリアライズするデータの構造体を渡します
今回は配列の中にデータがあるので [ArticleEntity].self
という感じで配列で括ってから指定します
こうすることで配列がルートドキュメントにある JSON でもシリアライズすることができます
let name = "test.json"
let fileManager = FileManager.default
let articlePath = try fileManager.url(for: .documentDirectory, in: .userDomainMask, appropriateFor:nil, create:false)
let localURL = articlePath.appendingPathComponent(name)
let articlesData = try Data(contentsOf: localURL)
let articleEntities: [ArticleEntity] = try! JSONDecoder().decode([ArticleEntity].self, from: articlesData)
for articleEntity in articleEntities {
print(articleEntity.title)
}
0 件のコメント:
コメントを投稿