陣列的序列化與反序列化

  • 如同上一小節的做法
  • 我們可以把 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)

陣列的序列化與反序列化

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *