Java Json And Object
August 15, 2017
在写RESTFul风格的接口的时候最经常使用的就是Json和对象的互换。 今天记录一下阿里巴巴开源的FastJson的使用方式。
FastJson号称最快的Json解析工具包。有幸听了作者的分享会,并且在前几天的转正答辩的时候,他作为我的面试官之一。花名很奇特,叫高铁,可能这就是FastJson为什么这么快的原因吧。
在听分享会的时候,惊叹于其将一个小小的工具包中运用了如此多的优化方式。他曾是阿里安全团队的一元,对于Java底层非常了解,并且一些算法能力也很强,更是运用了产生式编程的神奇方式编写了这个工具包的某些部分。
package #
这是开源的工具,听闻,据说是阿里对Java社区做的最大贡献了。
import com.alibaba.fastjson.*;
maven: #
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.36</version>
</dependency>
Example #
其对于json的操作都是在几个静态类中进行的。 举几个常用的例子来说名用法:
将Json文本数据信息转换为JsonObject对象,通过键值对获取值 #
private static void json2JsonObject() {
//一个JsonObject文本数据
String s = "{\"name\":\"xxx\"}";
//将JsonObject数据转换为Json
JSONObject object = JSON.parseObject(s);
//利用键值对的方式获取到值
System.out.println(object.get("name"));
}
将Json文本数据转换为JavaBean #
需要注意的是,Json文本信息中的键的名称必须和JavaBean中的字段名称一致。
private static void json2BeanM2() {
String s = "{\"id\":\"xx\",\"city\":\"xxx\"}";
//一个简单方便 的方法将Json文本信息转换为JsonObject对象的同时转换为JavaBean对象!
Weibo weibo = JSON.parseObject(s, Weibo.class);//Weibo类在下边定义
System.out.println(weibo.getId());
System.out.println(weibo.getCity());
}
Map类型的数据转换为JsonString #
Map<Integer, Object> map = new HashMap<Integer,Object>();
map.put(1, "No.1");
map.put(2, "No.2");
map.put(3, group.getList());
String jsonString = JSON.toJSONString(map);
System.out.println(jsonString);
// Map 套List的结构也可以。
有了上面几个例子就可以很明白了,在使用的时候还是用补全来看就可以了。
一般的思路就是先吧Json转成JSONObject,然后进行操作。 如果是直接操作Json,就是用静态类JSON来做,JSONObject就是用JSONObject来做。
在将Json转为对象的时候,要注意,对象的成员名一定要和Json中的键一致,都则就是null了。