CHO.Json:
- 现在,CHO.Json已经成为了一个强大的Json解析库,速度很快。
- 支持弱类型操作, JsonData实现了所有Json数据类型的基本操作, 支持像 Python 那样的操作方式
- 支持强类型操作, JsonData可以直接通过 ‘Get类型’ 方法来获取对应数据类型数据并进行操作
- 支持序列化, 反序列化, 一次分析多个Json数据:
- 序列化和反序列化则是所有库都有的功能
- 一次性序列化多个Json数据则是,允许一段文本中含有多个Json根数据,它可以用于解决TCP套接字的粘包问题
- CHO.Json 拥有教快的分析速度,能够完全与Json.Net与Text.Json匹敌,并且它的加载速度时三者中最快的。
这是它与Newtonsoft.Json的差别:
- CHO.Json少了许多冗余的功能, 例如将图片序列化为字符串, 因此CHO.Json可能要比Newtonsoft.Json轻量许多。
- CHO.Json的源代码比Newtonsoft.Json更适合初学者阅读, 在看懂它的代码后, 你会了解到有限状态机以及反射
- CHO.Json仅使用一个C#源文件, 这是因为它的源代码仅有1.5k行左右, 这其中还包含类型转换等片段
更详细的介绍:
首先, 在 CHO.Json 中, 包含一个 JsonData 类, 它可以用来表示任何 Json 数据, 通过 JsonData 类的静态方法, 可以从字符串或字符数组中分析出 Json 数据并存储到 JsonData 实例中, 或者将 JsonData 实例转化为 Json 字符串.
JsonData 是你最常用的类, 有一个 DataType 属性指定了这个实例所表示的 Json 数据类型, 例如String, Boolean, Integer, 通过 ‘Get类型’ 方法可以直接获取对应数据, 例如: GetString() 方法返回这个Json实例中所包含的字符串信息. 但如果你对一个包含了非字符串信息的 JsonData 实例使用这个方法, 则会抛出异常.
在最新版本的 CHO.Json 中, Serializie(序列化)和Deserialize(反序列化)用于直接转换字符串和指定的数据. 但在旧版, 则是转换 JsonData. 新版中, 推荐的方法是使用 JsonData 的静态方法: Parse, Create, ConvertToInstance, ConvertToText.
如果一个字符串里包含多个Json数据, 但并没有分隔符, 例如在TCP套接字中传输的多个Json文本, 你可以通过JsonData的静态方法 ParseStream 来分析它们.
JsonData 的 Content 属性是 JsonData 包含的数据原型, 如果是Array, 则它的类型是List<JsonData>, 如果是Object, 则它的类型是 Dictionary<JsonData, JsonData>
下面是使用CHO.Json的例子:
项目完整源代码: Github仓库