bantouyan-json库是用来解析与编码Json数据的Java库,该库按照Json标准RFC4627编写,能够实现字符串与Json实例的相互转换,可以读取Reader得到Json实例,或将Json实例写入到Writer,还能将Collection与Map对象转换为Json实例。
RFC4627定义了Json的六种类型,分别是Array、Object、String、Number、Boolean(常量true与false)与Null(常量null)。在bantouyan-json库中,这些类型有枚举类型JsonType定义,其中Number被拆分为Integer与Float,非别表示整数与浮点数。这些类型的对应关系如下表所示:
RFC类型 |
JsonType |
Class |
实际存储类型 |
注释 |
Array |
ARRAY |
JsonArray |
ArrayList |
|
Object |
OBJECT |
JsonObject |
HashMap |
|
String |
STRING |
JsonPrimitive |
java.lang.String |
|
Number |
INTEGER |
JsonPrimitive |
java.lang.Long |
|
Number |
FLOAT |
JsonPrimitive |
java.lang.Double |
不包括Infinity与NaN |
Boolean |
BOOLEAN |
JsonPrimitive |
java.lang.Boolean |
对应常量true与false |
Null |
NULL |
JsonPrimitive |
java.lang.String |
对应常量null |
INTEGER使用类型long存储整数,FLOAT使用类型double存储浮点数,但是,Java浮点数常量正负INFINITY与NaN存储为STRING类型,因为按照RFC4627这三个常量的字面量不符合Number的定义。
在bantouyan-json库中,JsonArray、JsonObject与JsonPrimitive有一个共同的超类Json,Json是一个抽象类,定义了这些类的一些共同特征,如Type、子元素的个数等,还提供了一些静态方法用来生成Json实例。
在解析、处理、编码Json的过程中,总会发生这样或那样的错误,为此,定义了JsonException异常。如果在处理Json实例过程中产生了异常,如存取类型不正确,Json实例内出现了循环引用等,或在解析String、Reader或Java Map、 Collection为Json实例过程中产生了错误,都会抛出JsonException异常。JsonException异常都属于RuntimeException,不必要时可以不予捕获。
在解析Collection或Map为Json实例的过程中,如果遇到普通的Java Class,bantouyan-json库就无法确定该如何解析这些普通类的对象。为此,json库中又定义了一个名为Jsonable的接口,该接口只有一个返回Json实例的方法generateJson()。故当解析Collection或Map时,如果遇到Jsonable的实例,就会调用所继承的generateJson()方法生成Json实例。
除了接口Jsonable外,bantouyan-json库还定义了另外一个接口JsonParser,也用于将Collection或Map的转换。与Jsonable只负责把自己转换为Json实例不同,JsonParser负责把其他的Java对象转换为Json实例。当我们需要把非自己编写的Java类转换为Json实例时,JsonParser非常有用。
特别警告:Json实例内部不允许出现循环引用,即Json实例内部,任何一个元素(包括顶层实例),都不能被其子元素或子元素的子元素引用,否则会引起一些方法出现异常或错误。因为从现实意义上讲,Json内部不会出现循环引用,但编写代码时可能有意无意的制造出有循环引用的实例。
相关阅读:
解析Json——bantouyan-json库概述
解析Json——Json类的静态方法
解析Json——Json类的实例方法
解析Json——操纵JsonObject
解析Json——操纵JsonArray
分享到:
相关推荐
在给定的压缩包中,`JSON Schema 校验库——json-schema-validator(java版本).pdf`可能是该库的使用指南或API文档,可以帮助开发者深入理解如何在Java项目中有效利用`json-schema-validator`进行JSON数据验证。...
`json-schema-inferrer`是针对Java平台的一个工具库,它的主要功能是从JSON实例数据生成对应的JSON Schema,方便开发者快速构建符合规范的数据模型。 `json-schema-inferrer`库的使用可以分为以下几个关键知识点: ...
在Java世界里,`json-lib-2.1.jar` 是一个用于处理JSON的库,它提供了一系列的方法来将Java对象转换为JSON格式,以及将JSON字符串反序列化回Java对象。这个库支持多种Java类型,包括基本类型、集合、Map、自定义Java...
编译好的 windows 版的 json-c-0.8 库。压缩包里面包含三个文件夹..\include,..\lib,..\src,”lib\“下有.lib和.dll。要使用该库,需要包含 json.h, json_object.h, json_tokener.h.
3. **json-c库功能**:JSON-C库提供了对JSON数据的序列化和反序列化支持,允许在C程序中创建和操作JSON对象。它包括了解析JSON文本、创建JSON结构、转换JSON到C数据类型以及反之的功能。 4. **JSON-C API**:库的...
3. **json-c库**:学习`json-c`库提供的API,包括解析JSON字符串到C数据结构,以及将C数据结构转换回JSON字符串。例如,`json_object_new_string`用于创建一个新的字符串对象,`json_object_to_json_string`则用于将...
JSON库如json-lib-2.4是Java开发者在处理JSON数据时的重要工具,它提供了一系列API,使得JSON与Java对象之间的转换变得更加简单。本文将深入探讨json-lib-2.4及其在Java开发中的应用。 首先,json-lib-2.4是一个...
1. JSON对象的创建、操作和解析:用户可以通过JSON-c库创建JSON对象,并进行添加、删除键值对的操作。同时,库还支持从JSON格式的字符串解析出JSON对象,以及将JSON对象转换回字符串。 2. JSON数据类型的处理:JSON...
这个压缩包包含了json-lib库的二进制文件,用于在Android和Java平台上解析和生成JSON数据。尽管这个版本是针对JDK 1.5,但json-lib通常兼容更高级别的Java版本,使得它在不同环境下的兼容性较好。 在Java中,json-...
`json-lib`是一个Java库,它提供了将Java对象转换为JSON格式,以及从JSON字符串反序列化回Java对象的功能。`json-lib-2.3-jdk15`是这个库的一个特定版本,兼容JDK 1.5,这意味着它可以在运行JDK 1.5或更高版本的Java...
1. **Jackson或Gson库**:这两个是其他流行的JSON库,可能会被`json-lib`用作底层实现的一部分,提供JSON序列化和反序列化的功能。 2. **Eclipse Collections**:可能用于提供高效的数据结构,如集合和映射,用于...
"json-2.2.3-jdk13全部包6个" 指的是JSON库的一个特定版本——2.2.3,这个版本是为Java 13编译和优化的。JSON库,如json-lib,是Java开发中用于处理JSON数据的工具,它提供了将Java对象转换为JSON字符串以及将JSON...
json-lib-2.4-jdk15所需全部JAR包,资源清单 json-lib-2.4-jdk15.jar 依赖: ezmorph-1.0.6.jar commons-beanutils-1.8.3.jar commons-lang-2.5.jar morph-1.1.1.jar commons-logging-1.1.1.jar commons-collections-...
`json-c`就是这样一个专门用于C语言的JSON解析库,它提供了对JSON数据的读取、创建、修改和序列化等功能,使得C程序员可以方便地与JSON格式进行交互。 `json-c`库的核心特性包括: 1. **解析和生成JSON**:`json-c...
标题中的"ezmorph-1.0.6.jar"和"json-lib-2.2.2-jdk15.rar"指的是两个不同的Java库,用于处理数据转换和JSON操作。ezmorph是一个Java库,提供了对象到对象的转换功能,而json-lib是另一个库,专门用于处理JSON...
json-lib是java工程中常用到的json解析工具,使用简单灵活,本压缩包中包括的文件有(使用json-lib必备的jar包): commons-beanutils-1.8.3.jar commons-collections-3.2.1.jar commons-lang-2.6.jar commons-...
`json-lib`是Java中一个著名的JSON处理库,它提供了多种Java API来操作JSON数据。`json-lib-2.4-jdk15-sources.jar`是这个库的源码版本,适用于JDK 1.5环境。源码文件对于开发者来说非常宝贵,因为它允许我们深入...
在本文中,我们将深入探讨一个针对C语言的JSON解析库——json-c-0.5,以及如何在Linux环境下使用它来解析JSON数据。 json-c是一个开源的C语言库,专门用于处理JSON格式的数据。版本0.5提供了稳定的功能,包括JSON...
json-lib-2.4-jdk15及其全部依赖jar包 commons-beanutils-1.8.0.jar、commons-collections-3.2.1.jar、commons-lang-2.6.jar、commons-logging-1.1.1.jar、ezmorph-1.0.6.jar、json-lib-2.4-jdk15.jar、xom-1.2.6....
`json-lib-2.4-jdk15.jar`是JSON库的一个实现,主要用于Java开发环境,它提供了将Java对象转换为JSON格式以及从JSON字符串还原Java对象的功能。 `json-lib`项目是一个开源库,旨在为各种Java平台提供JSON支持。版本...