数组序列化和反序列化

  • 类似上一节的
  • 我们可以将一个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: C# (cs)

说明

  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="Tom"}, new Person{name="Jim"} }
    },
    new WebInfo()
    {
        age = 4,
        webname = "FoxDevelop1",
        website = "foxdevelop.com",
        students = new Person[] { new Person{name="Tom"}, new Person{name="Jim"} }
    },
    new WebInfo()
    {
        age = 4,
        webname = "FoxDevelop2",
        website = "foxdevelop.com",
        students = new Person[] { new Person{name="Tom"}, new Person{name="Jim"} }
    }
};

// 序列化: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":"Tom"},{"name":"Jim"}]},{"webname":"FoxDevelop1","website":"foxdevelop.com",
"age":4,"students":[{"name":"Tom"},{"name":"Jim"}]},{"webname":"FoxDevelop2","website":"foxdevelop.com",
"age":4,"students":[{"name":"Tom"},{"name":"Jim"}]}]";

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)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注