添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

将 json数组序列化成 数组条数


有时候,我们在开发中可能会有这样的需求
我们获取到一个json 字符串,我们将它反序列化成对象的时候 ,需要某些属性,但是我们在序列化的时候又不需要他了,
我查了好多文档, JsonIgnore 并不好用 他会在序列化和反序列化的时候都会忽略,
我想到一个办法,就是使用 jsonConvert 来解决
新建一个类
继承JsonConvert 然后实现对应的方法

1.CanConvert方法
在这里插入图片描述

在这里插入图片描述
2.然后就是ReadJson 方法
这里要注意是将json 反序列化成你想要的属性,这里如果你想输出数组条数 就可以在
JsonConvert.DeserializeObject<List>(serializer.Deserialize(reader).ToString())后面加上 .count 即可返回当前数组的条数,前提是你对应的属性类型要设置成int
我的方法是这里不管他,额外再声明一个 listCount 属性,count 只有get 方法,return List.count 就可以了,这里就不需要改,然后我 List 在对象里也能用,话不多说上图
在这里插入图片描述
3.WriteJson方法
在这里插入图片描述
我在这里是这么用的,这里注释写的这样,就是将你序列化时候输出你想要的效果,如果不需要改,后面的 空字符串改为 value参数即可
还有很多应用场景,比如在用Mongodb 的时候,序列化的时候输出 string 的ID,但是我反序列化的时候,ID就必须是 ObjectId类型,这里我们可以将反序列化的 string字符串转成 ObjectId类型

参考帖子:http://www.cnblogs.com/ejiyuan/archive/2009/01/21/1379256.html 练习程序地址:http://pan.baidu.com/s/1nvBF1c1 序列化 我觉得比较实用的地方就是: 1、把 数组 、列表、字典这些 数据 序列化 后存进 数据 库,要用的时候再 反序列化 取出来,这些 数据 因为是动态的,通过字段一个个去保存的话太麻烦。 1.使用System.Runtime.Serialization. Json (1)在这个例子中,我们定义了一个Person类,并使用和DataMember特性来标记需要 序列化 反序列化 的属性。然后,我们创建了一个Person 对象 ,并使用方法将其 序列化 JSON 字符串。接着,我们使用方法将 JSON 字符串 反序列化 为Person 对象 。最后,我们输出 反序列化 后的 数据 。(2)在 C# 中,虽然。 Newton soft . Json Json Convert可以把xml转为 json 。            XmlDocument doc = new XmlDocument();            try            {                doc.LoadXml(xml);            }            catch (Exception ex)    ... 推荐使用 Json .Net类库,需要引入的命名空间; 序列化 Json Convert.SerializeObject 反序列化 Json Convert.DeserializeObject ![ 序列化 ](https://img-blog.csdnimg.cn/20210131160709201.png?x-oss-process=image/waterm... public static void BinarySaveTo<T>(T data, string pathName) FileStream fileStream = new FileStream(pathName, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite); BinaryFormatter binary JArray arrFile = new JArray(); arrFile.Add(new JObject() { new JProperty("FilePath",jArray[i]["FilePath"].ToString()),//文件路径 MemoryStream  stream = new MemoryStream(); BinaryFormatter  bf = new BinaryFormatter(); bf.Serialize(Stream,obj); byte[] newArray = new by 通常Socket 数据 传送过程中,我们把 对象 转化为byte 数组 ,接手时再将 数组 转化为对应的 对象 ,这一过程可以通过 序列化 前提是传输的 对象 必须标记为可以 序列化 的,下面举个例子: Package为 我们要传送接收的 对象 消息 [Serializable] public class Package /// <summary>