博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaEE的JSON API规范JSON-P/JSON-B
阅读量:4179 次
发布时间:2019-05-26

本文共 2346 字,大约阅读时间需要 7 分钟。

从JavaEE 7开始,一个专门用于处理JSON数据的API被纳入JavaEE规范体系,这就是Java API for JSON Processing (JSON-P) 。在JavaEE 8中,又在此基础上提供了Java API for JSON Binding (JSON-B)。至此,与XML数据类似,JavaEE提供了完整的处理JSON数据的APIs。

目前,Glassfish为JSON-P提供了参考实现;Eclipse Yasson为JSON-B提供了参考实现。

1. JSON-P

JSON-P是JSR标准规范之一,用以解析、生成、转换和查询JSON数据的APIs。

1) 与大多数JSON处理的API相似,JSON-P中的API也可以分为两大类:

  • 一次性读取全部JSON数据,在内存中构建出完整Tree Model的对象模型API
  • 一边读JSON数据,一边处理的Streaming API

2) JSON-P API的包结构

  • javax.json包,树状模型API相关的API

            Json类,所有JSON对象的工厂类,提供大量静态方法

                JsonBuilderFactory
                JsonObjectBuilder, JsonArrayBuilder

                JsonParserFactory, JsonGeneratorFactory

                JsonParser, JsonGenerator

                JsonReaderFactory, JsonWriterFactory

                JsonReader, JsonWriter
            JsonObject,以Map方式访问无序的name/value对合集
                可以通过JsonObjectBuilder构建
            JsonArray,以List方式访问有序的JsonObject合集
                可以通过JsonArrayBuilder构建

  • javax.json.stream包,Streaming处理相关的API

            JsonParser

            JsonGenerator

  • javax.json.spi包,一个SPI接口,运行时插入JSON处理对象的实现

3) JSON-P API的基本用法

  • 读取JSON数据,得到一个JsonObject对象
JsonReader jsonReader = Json.createReader("strJsonData");JsonObject object = jsonReader.readObject();jsonReader.close();

        说明,一个JsonObject对象的值可能是:

            JsonArray对象
            JsonNumber对象
            JsonString对象
            JsonObject对象
            JsonValue.TRUE值
            JsonValue.FALSE值
            JsonValue.NULL值

  • 读取JSON数据,得到一个JsonArray对象
JsonReader jsonReader = Json.createReader("[strJsonData]");JsonArray array = jsonReader.readArray();jsonReader.close();

        说明,一个JsonArray对象中可能包含:

            另一个嵌套的JsonArray对象
            JsonNumber对象
            JsonString对象
            JsonObject对象
            JsonValue.TRUE值
            JsonValue.FALSE值
            JsonValue.NULL值

  • 通过循环读取JsonArray对象中的一个值,得到一个JsonObject对象
JsonObject object = array.getJsonObject(int_index);
  • 将一个JsonObject对象转换为一个JsonArray对象
JsonArray value = Json.createArrayBuilder()    .add(object)    .build();

2. JSON-B

JSON-B是JSR标准规范之一,实现JSON数据与Java对象之间的绑定。常见的Java primitive types和String类都能够自动绑定。

JSON-B的实现,往往是基于JSON-P的javax.json.stream API定义实现的。

1) JSON-B的包结构

  • javax.json.bind
  • javax.json.bind.annotation
  • javax.json.bind.config
  • javax.json.bind.serializer
  • javax.json.bind.adapter
  • javax.json.bind.spi

2) JSON-B API的基本用法

  • 将Java对象转换为字符串的JSON数据
Jsonb jsonb = JsonbBuilder.create();String result = jsonb.toJson(myDogObject);
  • 将字符串的JSON数据转换为Java对象
Dog dog = jsonb.fromJson("myDogJSONdata", MyDog.class);
  • 将字符串的JSON数据转换为List对象
List
dogs = jsonb.fromJson("myDogsJSONResult", ArrayList.getClass());

参考链接:

    https://javaee.github.io/jsonp/

    
    http://jcp.org/en/jsr/detail?id=374
    https://javadoc.io/doc/javax.json/javax.json-api
 

转载地址:http://iqlai.baihongyu.com/

你可能感兴趣的文章
Linux系统中环境变量的配置
查看>>
Linux系统中配置脚本程序开机启动
查看>>
让Linux系统上的nginx支持php程序
查看>>
源码编译安装LNMP环境之Nginx篇
查看>>
源码编译安装LNMP环境之PHP篇
查看>>
Linux中rpm工具使用教程
查看>>
Linux中查询进程和服务端口是否占用
查看>>
Linux中yum工具使用教程
查看>>
Linux中使用yum工具或rpm工具来安装和卸载MySQL
查看>>
Linux中创建快捷方式
查看>>
mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists
查看>>
The server quit without updating PID file
查看>>
纯css实现DIV水平垂直居中显示(兼容IE6)
查看>>
客户端无法远程连接redis服务器
查看>>
无法取消打印机所有文档的解决办法
查看>>
关于主从复制、读写分离
查看>>
谷歌BBR的安装
查看>>
找回苹果电脑登录密码
查看>>
JS最佳实践——单例模式
查看>>
通过pcre、zlib、openssl等库源码来源码编译nginx
查看>>