配列のシリアライズとデシリアライズ

  • 前のセクションと同じ要領で
  • JSON文字列を配列へ変換することができます
  • 元のクラス名を List<クラス名> に置き換えるだけです

string jsonString = @"""{""webinfos"":[{""webname"":""FoxDevelop"",""website"":""foxdevelop.com"",""age"":4,
""students"":[{""name"":""ハルト""},{""name"":""リク""}]},{""webname"":""FoxDevelop1"",""website"":""foxdevelop.com1"",
""age"":6,""students"":[{""name"":""ソウタ""},{""name"":""ユウマ""}]}]}""";

StringReader sr = new StringReader(jsonString);
JsonReader jr = new JsonReader(sr);
List<WebInfo> infoList = new JsonSerializer().Deserialize(jr, typeof(List<WebInfo>)) as List<WebInfo>;Code language: PHP (php)

補足

  1. コード構造、変数名、エスケープされたダブルクォート、改行はそのまま、対象テキストのみ置換
  2. 後続のデシリアライズ処理コードは変更しない

① List をJSON配列文字列へシリアライズ

// Listコレクションを作成
List<WebInfo> webList = new List<WebInfo>()
{
    new WebInfo()
    {
        age = 4,
        webname = "FoxDevelop",
        website = "foxdevelop.com",
        students = new Person[] { new Person{name="ハルト"}, new Person{name="リク"} }
    },
    new WebInfo()
    {
        age = 4,
        webname = "FoxDevelop1",
        website = "foxdevelop.com",
        students = new Person[] { new Person{name="ソウタ"}, new Person{name="ユウマ"} }
    },
    new WebInfo()
    {
        age = 4,
        webname = "FoxDevelop2",
        website = "foxdevelop.com",
        students = new Person[] { new Person{name="アオイ"}, new Person{name="ケント"} }
    }
};

// シリアライズ:Listオブジェクト → JSON配列文字列
StringWriter sw = new StringWriter();
JsonWriter writer = new JsonWriter(sw);
new JsonSerializer().Serialize(writer, webList);
string jsonArrStr = sw.GetStringBuilder().ToString();Code language: PHP (php)

② JSON配列文字列を List にデシリアライズ

string jsonString = @"[{"webname":"FoxDevelop","website":"foxdevelop.com","age":4,
"students":[{"name":"ハルト"},{"name":"リク"}]},{"webname":"FoxDevelop1","website":"foxdevelop.com",
"age":4,"students":[{"name":"ソウタ"},{"name":"ユウマ"}]},{"webname":"FoxDevelop2","website":"foxdevelop.com",
"age":4,"students":[{"name":"アオイ"},{"name":"ケント"}]}]";

StringReader sr = new StringReader(jsonString);
JsonReader jr = new JsonTextReader(sr);
List<WebInfo> dataList = new JsonSerializer().Deserialize(jr, typeof(List<WebInfo>)) as List<WebInfo>;Code language: PHP (php)

配列のシリアライズとデシリアライズ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です