在NET Framework 4.7.2中不能用Newtonsoft.Json进行序列化和反序列化,为解决此问题,采用System.Text.Json进行序列化,注意要添加System.Memory的引用。
1、创建测试类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace AutoTestClientApp.Models
{public class CmdNode{public string Name { get; set; } = string.Empty;public int CmdWord { get; set; } = 0;public int Direction { get; set; } = 0;public object Data { get; set; } = 0;public bool Compare(CmdNode other){if (Name.Equals(other.Name) && CmdWord == other.CmdWord && Direction == other.Direction && Data.Equals(other.Data)){return true;}return false;}}
}
2、应用测试
//实例化类并赋值CmdNode cmdNode = new CmdNode();cmdNode.Name = "序列化测试";cmdNode.CmdWord = 0x10;cmdNode.Direction = 1;List<string> list = new List<string>();list.Add("12");list.Add("34");cmdNode.Data = list;//实例序列化string str = System.Text.Json.JsonSerializer.Serialize(cmdNode);Console.WriteLine(str);//实例反序列化CmdNode cmdNode1 = System.Text.Json.JsonSerializer.Deserialize<CmdNode>(str);bool flag = cmdNode1.Compare(cmdNode);Console.WriteLine($"粗略比较结果:{flag}");
3、运行结果
4、问题分析
反序列化后不相等的原因在于对象类型比较的不完善。