2021年7月5日月曜日

Swift5 でファイルとして保存した JSON 情報をシリアライズする方法

Swift5 でファイルとして保存した JSON 情報をシリアライズする方法

概要

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 件のコメント:

コメントを投稿