newtonjson.net JsonConverter 的使用自定义序列化某个类(一)
来源:互联网 发布:全民淘宝权 编辑:程序博客网 时间:2024/06/13 20:32
json.net可以说是.net平台最好的json序列化类库了。
在使用的过程中,我遇到了这个问题,比如说List< T >中,如果是T的子类U,依然会被反序列化成T的,所以我需要自己定义序列化方法,在json.net中,只要继承JsonConvert类就可以了,
public class convert : JsonConverter
我们需要重写3个方法
public class convert : JsonConverter { public override bool CanConvert(Type objectType) { return true; } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { return null; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { } }
第一 Canconvert这个就是判断传入的类型能否转换,不多说了
第二个 ReadJson方法,它会传入一个JSonReader参数,有了它,我们就可以自已解析json了,它有
if (reader.TokenType != JsonToken.StartObject) throw new Exception("json 格式有误");// Token,英文符的意思,就是当前这个位置,它是什么,是json中的对象开始标志{,对象结束标志},还是数组开始[,或者是属性,这是它表达的意思。 public enum JsonToken { None, StartObject, StartArray, StartConstructor, PropertyName, Comment, Raw, Integer, Float, String, Boolean, Null, Undefined, EndObject, EndArray, EndConstructor, Date, Bytes, }
token处的值
reader.Value
token处的值,但是{,或者},或者[ ,或者]的token的值是null,而JsonToken.PropertyName这种token是有值的,比如{“name”:”zt”}
如果读到第二个token,reader.Value 就是“name”,通过read方法向前读,每一次read都会向前进一步,读到下一个token,
read方法
if (reader.TokenType != JsonToken.StartObject) reader.Read(); //读取下一个token
有了reader,我们就可以自己处理json数据了,但是注意,reader.Read()函数会返回bool值,我们必须要一直读取到它返回false为止,不然json.net会抛出异常。
阅读全文
0 0
- newtonjson.net JsonConverter 的使用自定义序列化某个类(一)
- 自定义 jsonConverter的问题记录
- 继承JsonConverter实现json.net支持dataset与datatable序列化
- JSON继承JsonConverter序列化与反序列化重写类属性
- .NET 中Newtonsoft的使用 自定义对象的序列化
- Json.NET使用入门(一)【序列化】
- 笔记:Newtonjson.Json自定义输出那些属性
- 使用自定义属性实现Java和.net的XML序列化
- .NET自定义序列化过程
- .NET 插件系统框架设计(二) 使用对象序列化实现自定义配置文件管理
- 使用目前hadoop内置的序列化类(不使用自定义序列化类),实现流量统计的功能
- 使用ISerializable自定义序列化
- 使用特征自定义序列化
- .Net框架下的序列化机制(一)
- FlowChart.NET使用教程:创建自定义节点类型(一)
- Hadoop自定义可序列化的类
- Unity自定义类的序列化
- .net 序列化、反序列化之自定义序列化
- SpringMVC框架介绍
- 基于贝叶斯的垃圾邮件过滤器 JAVA
- Oracle数据库入门
- 欢迎使用CSDN-markdown编辑器
- Android的输入法监听布局
- newtonjson.net JsonConverter 的使用自定义序列化某个类(一)
- 常用类
- revit二次开发——自适应构件族
- MySQL基础(3)——计算字段、处理函数、聚集函数和数据分组
- Android中的AOP编程之AspectJ实战实现数据埋点
- Java NIO系列教程(一) Java NIO 概述
- 《机器学习》学习笔记六 贝叶斯分类器
- JS-常用互动方法
- Java堆区的认识