コーダーとコード化可能モデルの操作

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む2読むのに数分
  • のiOS実装 Mobile SDK は、コーダーとCodableモデルの追加機能を提供します。

    コーダー列挙

    コーダー列挙体は、JSONEncoder と付随する JSONDecoder をラップして、両方が同じコーディング戦略を提供するようにします。Codable モデルを処理する NowData フレームワーク API の多くは JSON からのコーディングとデコードに依存しているため、コーダーはエンコーダーとデ コーダー を指定する方法を簡素化および標準化します。通常は、ISO8601UTC 以外の日付形式を使用して日付をエンコードおよびデコードするデフォルトのコーダー (.default) を使用するだけで十分です。DateFormatter.nonISO8601UTC は、NowData フレームワークによって提供される静的な日付フォーマッターです。プラットフォームによって ServiceNow UTC (GMT + 0) タイムゾーンで保存された日付のエンコードとデコードを担当し、デバイスのロケールとタイムゾーンを考慮して 、テーブル API によって yyyy-MM-dd HH:MM:SS 形式で使用されます。

    特定の日付形式を処理する場合など、カスタム JSON コーディングが必要な場合は、カスタム JSONEncoderJSONDecoder をカスタムコーダーの関連タイプとして指定することで、カスタムコーダーを作成できます。エンコーダーとデコーダーの両方で、同じコーディング戦略を使用する必要があります。

    たとえば、次のようになります。

    let myEncoder = JSONEncoder()
    myEncoder.dateEncodingStrategy = .formatted(.nonISO8601UTC)
    let myDecoder = JSONDecoder()
    myDecoder.dateDecodingStrategy = .formatted(.nonISO8601UTC)
    
    let myCoder: Coder = .custom(myEncoder, myDecoder)

    ネストされた構造のコード化可能な拡張

    NowData フレームワークには、ドット区切りパスで入れ子になった構造をデコードする機能が用意されています。この機能を使用すると、ラッパー構造とネストされた JSON デコードを使用する必要がなくなるため、ネストされたデータを簡単に使用できます。