前言
Json是一种轻量级的数据交换格式,语法非常简单,同时能满足大部分需求。支持常见的几种数据类型,支持嵌套。因其体量轻、可以直接和前端JS交互的特点,常被用于前后端的数据传输。此外,由于轻便易解析,Json还在许多软件中代替XML、INI等格式作为配置文件使用。
下面我们用C#实现一个简单的Json解析器,在支持基本的对象和Json字符串映射功能的同时,附加一些有趣的小功能。
功能清单
我们先提出需求,把要实现的功能一一列出来,作为后面的设计和实现的参考。
基本功能
- 将Json字符串转换成C#对象。
- 将C#对象转换成Json字符串。
附加功能
- 用户可以指定Json字符串的键名和C#对象的属性名之间的映射。比如,可以让Json字符串的"Name"键和C#对象的"ID"属性对应。
- 用户可以指定哪些字段或属性被解析,哪些被忽略。
- 用户可以自定义某个Json字符串的键值对和C#对象的属性之间的转换函数。比如,可以让Json字符串的布尔型true转换成C#对象的字符串类型"是"。反之亦可。
- 用户可以自定义某个成员的约束条件。比如不能为空、字符串长度为10、数字在1到100之间等。
需求细化
- 对于需求一,我们考虑三种情况。①在编译期就能明确指出接收对象的静态类型的,使用泛型接口T ToObject<T>(String)返回对应类型的对象。②在运行时才能确定接收对象的静态类型的,使用接收