Vert.x学习之json
来源:互联网 发布:天地诸神光翼进阶数据 编辑:程序博客网 时间:2024/06/05 07:31
JSON
在java语言中,java并没有对json提供原生的支持。但在Vert.x中有两个类提供这样的支持。
JSON 对象
JsonObject类用来描述JSON对象。
一个JSON 对象基本上只是一个 Map 结构。它具有字符串的键,值可以是任意一种JSON 支持的类型(如 string, number, boolean)。
JSON 对象也支持 null
值。
创建 JSON 对象
可以使用默认构造函数创建空的JSON对象。
您可以通过一个 JSON 格式的字符串创建JSON对象:
String jsonString = "{\"foo\":\"bar\"}";JsonObject object = new JsonObject(jsonString);
您可以从通过一个Map创建JSON对象:
Map<String, Object> map = new HashMap<>();map.put("foo", "bar");map.put("xyz", 3);JsonObject object = new JsonObject(map);
将键值对放入 JSON 对象
使用put
方法可以将值放入到JSON对象里。
这个API是流式的,因此这个方法可以被链式地调用。
JsonObject object = new JsonObject();object.put("foo", "bar").put("num", 123).put("mybool", true);
从 JSON 对象获取值
您可使用 getXXX
方法从JSON对象中获取值。例如:
String val = jsonObject.getString("some-key");int intVal = jsonObject.getInteger("some-other-key");
JSON 对象和 Java 对象间的映射
您可以从 Java 对象的字段创建一个JSON 对象,如下所示:
你可以通过一个JSON 对象来实例化一个Java 对象并填充字段值。如下所示:
request.bodyHandler(buff -> { JsonObject jsonObject = buff.toJsonObject(); User javaObject = jsonObject.mapTo(User.class);});
请注意上述代码直接使用了 Jackson 的 ObjectMapper#convertValue()
来执行映射。关于字段和构造函数的可见性的影响、对象引用的序列化和反序列化的问题等等可参考 Jackson 的文档获取更多信息。
在最简单的情况下,如果 Java 类中所有的字段都是 public
(或者有 public
的 getter/setter)时,并且有一个 public
的默认构造函数(或不定义构造函数),mapFrom
和 mapTo
都应该成功。
只要不存在对象的循环引用,嵌套的 Java 对象可以被序列化/反序列化为嵌套的JSON对象。
将 JSON 对象编码成字符串
您可使用 encode
方法将一个对象编码成字符串格式。
JSON 数组
JsonArray
类用来描述 JSON数组。
一个JSON 数组是一个值的序列(值的类型可以是 string、number、boolean 等)。
JSON 数组同样可以包含 null
值。
创建 JSON 数组
可以使用默认构造函数创建空的JSON数组。
您可以从JSON格式的字符串创建一个JSON数组:
String jsonString = "[\"foo\",\"bar\"]";JsonArray array = new JsonArray(jsonString);
将数组项添加到JSON数组
您可以使用 add
方法添加数组项到JSON数组中:
JsonArray array = new JsonArray();array.add("foo").add(123).add(false);
从 JSON 数组中获取值
您可使用 getXXX
方法从JSON 数组中获取值。例如:
String val = array.getString(0);Integer intVal = array.getInteger(1);Boolean boolVal = array.getBoolean(2);
将 JSON 数组编码成字符串
您可使用 encode
将一个 JsonArray
编码成字符串格式。
- Vert.x学习之json
- # vert.x学习笔记
- Vert.x 之Web Client
- Vert.x学习笔记(一) Vert.x 核心包
- Vert.x学习笔记(二) Vert.x Web Client
- Vert.x
- Vert.x
- Vert.x 3学习笔记---01
- Vert.x 3学习笔记---02
- Vert.x 3学习笔记---03
- Vert.x 3学习笔记---04
- Vert.x 3学习笔记---05
- Vert.x 3学习笔记---06
- Vert.x 3学习笔记---07
- Vert.x 3学习笔记---08
- Vert.x 3学习笔记---09
- Vert.x 3学习笔记---10
- Vert.x 3学习笔记---11
- 【Codeforces】2015-2016 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2015) A Adjoin the Netwo
- 新手上路之 HttpServlet和常用对象 笔记
- 一起玩转java并发(0)序言
- 需求挖掘五步曲,快速建设大数据项目
- Android 之简单 AIDL 客户端和服务端 附源码
- Vert.x学习之json
- ASP.NET – Hashtable 对象
- CSS样式表及常用属性
- uva 10673 exgcd
- linux kernel对于浮点运算的支持
- codeforces.contest/835/problem/D Palindromic characteristics (记忆化搜索)
- Linux/Windows下 C/C++开发的差异zz
- 两对缓冲流 BufferedInputStream BufferedOutputStream 和 BufferedReader BufferedWriter
- 新手学C++多线程编程(6)合作与同步