[Xamarin.Forms] Jsonファイルを使用する(2)

スポンサーリンク

前回の記事「Jsonファイルを使用する(1)」では、JSONファイルを作成し、プロジェクトに組み込むまでを説明しました。

今回は、JSONファイル操作を行うNuGetパッケージの追加と、デシリアライズするためのクラスの作成を行います。

アジェンダは以下の通りです。

  1. JSON用のNuGetパッケージの追加
  2. シリアライズとデシリアライズ
  3. デシリアライズ用クラスの作成

1.JSON用NuGetパッケージの追加

Xamarin.FormsでJSONファイルを操作するには、ライブラリを使用します。標準のライブラリを使用しても行えますが、もっと便利なライブラリ(NuGetパッケージ)を使用します。

Windows版のVisual Studioを使用している場合は、メニューの[ツール]-[NuGetパッケージマネージャー]-[ソリューションのNuGetパッケージの管理]をクリックして下さい。

NuGetソリューションの画面に切り替わるので、「参照」を選択して「Json.Net」

を検索します。検索結果から「newtonsoft.Json」を選択して[インストール]ボタンをクリックして下さい。

Mac版Visual Studioの場合は、共通プロジェクト(PCLプロジェクト)を右クリックして[追加]-[NuGetパッケージの追加]を選択します。

検索窓で「Json.Net」を入力して検索をし、一覧から「Json.Net」にチェックを付けます。最後に[パッケージを追加]をクリックします。

2.シリアライズとデシリアライズ

はじめに、シリアライズとデシリアライズの用語についておさらいしておきましょう。

シリアライズは、クラスの内容をある形式のファイルに変換することです。例えば、personというクラスがあり、このクラスが持つデータの内容から、XMLやJSON形式のファイルを作成することをシリアライズ化と呼びます。

一方デシリアライズは、シリアライズ操作の逆です。あるファイルの内容から、クラスにデータをセットすることをデシリアライズと呼びます。

先ほど組み込んだJson.Netは、JSONファイルのシリアライズ/デシリアライズを行うための機能を持っています。この機能を使用することで、容易にシリアライズもデシリアライズも行うことができます。

今回の一連の記事では、プロジェクト内に配置したperson.jsonというファイルの内容をクラスに展開したいので、デシリアライズを行います。

3.デシリアライズ用クラスの作成

はじめに、前回作成したperson.jsonのおさらいをしておきましょう。

{
  "persons": [
    {
      "Name": "HIRO",
      "Age": 44,
      "Gender": "Male"
    },
    {
      "Name": "Bill",
      "Age": 53,
      "Gender": "Male"
    },
    {
      "Name": "Cathy",
      "Age": 38,
      "Gender": "Female"
    },
  ]
}

personsという配列があり、その中にName, Age, Genderのデータを持っているJSONファイルです。

このファイルの内容を保持できるクラスは、Nameプロパティ(String型)、Ageプロパティ(int型)、Genderプロパティ(String型)を持っていればよいことがわかります。JSONファイルではpersonsという配列がありますが、これはクラスのインスタンスを配列化すれば対応が可能です。よってシンプルにName, Age, Genderのプロパティを持つクラスを作成します。

以上を理解できたら、共通のプロジェクト(JsonSample)に「Personクラス」を作成してください。

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Gender { get; set; }
}

Xamrinのサイトのサンプルでは、上記のようなクラスの配列をプロパティとして持つクラスを作成して管理しています。例にならって、Rootobjectというクラスも作成することにします。

public class Rootobject
{
    public Person[] persons { get; set; }
}

以上でデシリアライズ用クラスの作成は完了です。

次回は、いよいよデシリアライズを行う方法について説明します。

Please follow and like us:

コメント

タイトルとURLをコピーしました