相关文章推荐
聪明的西红柿  ·  AMD Customer Community·  3 年前    · 
粗眉毛的蚂蚁  ·  How to install ...·  3 年前    · 

将 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>