`
bantouyan
  • 浏览: 147426 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

解析Json——bantouyan-json库概述

    博客分类:
  • Json
阅读更多

      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

1
5
分享到:
评论

相关推荐

    JSON Schema 校验库——json-schema-validator(java版本).rar

    在给定的压缩包中,`JSON Schema 校验库——json-schema-validator(java版本).pdf`可能是该库的使用指南或API文档,可以帮助开发者深入理解如何在Java项目中有效利用`json-schema-validator`进行JSON数据验证。...

    JSON Schema 生成库——json-schema-inferrer(java版).rar

    `json-schema-inferrer`是针对Java平台的一个工具库,它的主要功能是从JSON实例数据生成对应的JSON Schema,方便开发者快速构建符合规范的数据模型。 `json-schema-inferrer`库的使用可以分为以下几个关键知识点: ...

    json-lib-2.1.jar和struts2-json-plugin-2.1.8.1.jar

    在Java世界里,`json-lib-2.1.jar` 是一个用于处理JSON的库,它提供了一系列的方法来将Java对象转换为JSON格式,以及将JSON字符串反序列化回Java对象。这个库支持多种Java类型,包括基本类型、集合、Map、自定义Java...

    json解析库(json-c-0.8,windows版)

    编译好的 windows 版的 json-c-0.8 库。压缩包里面包含三个文件夹..\include,..\lib,..\src,”lib\“下有.lib和.dll。要使用该库,需要包含 json.h, json_object.h, json_tokener.h.

    json-c-0.12.1.tar.gz

    3. **json-c库功能**:JSON-C库提供了对JSON数据的序列化和反序列化支持,允许在C程序中创建和操作JSON对象。它包括了解析JSON文本、创建JSON结构、转换JSON到C数据类型以及反之的功能。 4. **JSON-C API**:库的...

    json-c-master_c语言项目_json-c-master_JSONC语言_json-c_

    3. **json-c库**:学习`json-c`库提供的API,包括解析JSON字符串到C数据结构,以及将C数据结构转换回JSON字符串。例如,`json_object_new_string`用于创建一个新的字符串对象,`json_object_to_json_string`则用于将...

    json-lib-2.4和相应的依赖包

    JSON库如json-lib-2.4是Java开发者在处理JSON数据时的重要工具,它提供了一系列API,使得JSON与Java对象之间的转换变得更加简单。本文将深入探讨json-lib-2.4及其在Java开发中的应用。 首先,json-lib-2.4是一个...

    json-c-0.12.tar.gz_JSON_json 0.12_json-c-0.12_json-c-0.12下载

    1. JSON对象的创建、操作和解析:用户可以通过JSON-c库创建JSON对象,并进行添加、删除键值对的操作。同时,库还支持从JSON格式的字符串解析出JSON对象,以及将JSON对象转换回字符串。 2. JSON数据类型的处理:JSON...

    json-lib-2.2.2-jdk15.jar

    这个压缩包包含了json-lib库的二进制文件,用于在Android和Java平台上解析和生成JSON数据。尽管这个版本是针对JDK 1.5,但json-lib通常兼容更高级别的Java版本,使得它在不同环境下的兼容性较好。 在Java中,json-...

    json-lib-2.3-jdk15开发包和所有依赖包

    `json-lib`是一个Java库,它提供了将Java对象转换为JSON格式,以及从JSON字符串反序列化回Java对象的功能。`json-lib-2.3-jdk15`是这个库的一个特定版本,兼容JDK 1.5,这意味着它可以在运行JDK 1.5或更高版本的Java...

    json-lib-2.4-jdk15.jar所需全部JAR包_JSON_

    1. **Jackson或Gson库**:这两个是其他流行的JSON库,可能会被`json-lib`用作底层实现的一部分,提供JSON序列化和反序列化的功能。 2. **Eclipse Collections**:可能用于提供高效的数据结构,如集合和映射,用于...

    json-2.2.3-jdk13全部包6个

    "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包,资源清单 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`就是这样一个专门用于C语言的JSON解析库,它提供了对JSON数据的读取、创建、修改和序列化等功能,使得C程序员可以方便地与JSON格式进行交互。 `json-c`库的核心特性包括: 1. **解析和生成JSON**:`json-c...

    ezmorph-1.0.6.jar和json-lib-2.2.2-jdk15.rar

    标题中的"ezmorph-1.0.6.jar"和"json-lib-2.2.2-jdk15.rar"指的是两个不同的Java库,用于处理数据转换和JSON操作。ezmorph是一个Java库,提供了对象到对象的转换功能,而json-lib是另一个库,专门用于处理JSON...

    java解析json的工具--json-lib

    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-2.4-jdk15-sources.jar

    `json-lib`是Java中一个著名的JSON处理库,它提供了多种Java API来操作JSON数据。`json-lib-2.4-jdk15-sources.jar`是这个库的源码版本,适用于JDK 1.5环境。源码文件对于开发者来说非常宝贵,因为它允许我们深入...

    json-c-0.5.tar.gz_c json_linux json_解析json

    在本文中,我们将深入探讨一个针对C语言的JSON解析库——json-c-0.5,以及如何在Linux环境下使用它来解析JSON数据。 json-c是一个开源的C语言库,专门用于处理JSON格式的数据。版本0.5提供了稳定的功能,包括JSON...

    json-lib-2.4-jdk15及其全部依赖jar包

    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和其他关联的jar包

    `json-lib-2.4-jdk15.jar`是JSON库的一个实现,主要用于Java开发环境,它提供了将Java对象转换为JSON格式以及从JSON字符串还原Java对象的功能。 `json-lib`项目是一个开源库,旨在为各种Java平台提供JSON支持。版本...

Global site tag (gtag.js) - Google Analytics