JSON之FastJson开发库

JSON介绍

JSON(javaScript Object Notation)是一种轻量级的数据交换格式。

主要采用键值对({"name": "json"})的方式来保存和表示数据,作为前后端数据交换所用。 

JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质上是一个字符串。更多简介见介绍JSON

JSON取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度

json形式及语法

1、JSON对象 

{
	"ID": 1001,
	"name": "张三",
	"age": 24
}
  1. 数据在花括号中
  2. 数据以"键:值"对的形式出现(其中键多以字符串形式出现,值可取字符串,数值,甚至其他json对象)
  3. 每两个"键:值"对以逗号分隔(最后一个"键:值"对省略逗号)

遵守上面3点,便可以形成一个json对象。

2、JSON对象数组

[
	{"ID": 1001, "name": "张三", "age": 24},
	{"ID": 1002, "name": "李四", "age": 25},
	{"ID": 1003, "name": "王五", "age": 22}
]
  1. 数据在方括号中(可理解为数组)
  2. 方括号中每个数据以json对象形式出现
  3. 每两个数据以逗号分隔(最后一个无需逗号)

遵守上面3点,便可形成一个json对象数组(及一个数组中,存储了多个json对象)

理解了上面两种基本的形式,我们就可以得出其他的数据形式,例如下面这个:

{
	"部门名称":"研发部",
	"部门成员":[
	{"ID": 1001, "name": "张三", "age": 24},
	{"ID": 1002, "name": "李四", "age": 25},
	{"ID": 1003, "name": "王五", "age": 22}],
	"部门位置":"xx楼21号"
}

 3、JSON字符串

JSON字符串也是在平时开发中使用较多的,json字符串应满足以下条件:

1:它必须是一个字符串,由" "或者' '包裹数据,支持字符串的各种操作

2:里面的数据格式应该要满足其中一个格式,可以是json对象,也可以是json对象数组或者是两种基本形式的组合变形。

总结:json可以简单的分为基本形式:json对象,json对象数组。两种基本格式组合变形出其他的形式,但其本质还是json对象或者json对象数组中的一种。json对象或对象数组可以转化为json字符串,使用于不同的场合。

注意点:在封装json数据的时候,很容易出现错误,比如粗心的在最后一条数据的末尾加上了逗号等等,这里我提供一个在线验证工具,方便大家验证json数据格式的正确性

http://www.bejson.com/
 

 

FastJson简介

fastjson.jar是阿里开发的一款专门用于Java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换。除了这个fastjson以外,还有Google开发的Gson包,其他形式的如net.sf.json包,都可以实现json的转换。方法名称不同而已,最后的实现结果都是一样的。

官方开源地址:https://github.com/alibaba/fastjson

maven依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.58</version>
</dependency>

一、FastJson 常用 API

1、JSON对象

FastJson API 入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。

主要的API是JSON.toJSONStringJSON.parseObject

package com.alibaba.fastjson;
public abstract class JSON {
      public static final String toJSONString(Object object);
      public static final <T> T parseObject(String text, Class<T> clazz, Feature... features);
}

序列化:Object-->String

String jsonString = JSON.toJSONString(obj);

反序列化:String-->Object

VO vo = JSON.parseObject("...", VO.class);

泛型反序列化:

import com.alibaba.fastjson.TypeReference;

List<VO> list = JSON.parseObject("...", new TypeReference<List<VO>>() {});

 注意:

  • JSONArray : 相当于List
  • JSONObject: 相当于Map<String,Object>
// JSON文本parse为JSONObject或者JSONArray
public static final Object parse(String text);  
// JSON文本parse成JSONObject
public static final JSONObject parseObject(String text);  
// JSON文本parse为JavaBean   
public static final <T> T parseObject(String text, Class<T> clazz); 
// JSON文本parse成JSONArray
public static final JSONArray parseArray(String text);  
// JSON文本parse成JavaBean集合 
public static final <T> List<T> parseArray(String text, Class<T> clazz); 

// JavaBean序列化为JSON文本 
public static final String toJSONString(Object object); 
// JavaBean序列化为带格式的JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); 
// JavaBean转换为JSONObject或者JSONArray
public static final Object toJSON(Object javaObject); 

使用实例

parse POJO

import com.alibaba.fastjson.JSON;

//将JSON文本转换为java对象
Model model = JSON.parseObject(jsonStr, Model.class);

parse Tree

import com.alibaba.fastjson.*;

JSONObject jsonObj = JSON.parseObject(jsonStr);

parse POJO Generic

import com.alibaba.fastjson.JSON;

Type type = new TypeReference<List<Model>>() {}.getType(); 
List<Model> list = JSON.parseObject(jsonStr, type);

convert POJO to json string

import com.alibaba.fastjson.JSON;

Model model = ...; 
String jsonStr = JSON.toJSONString(model);

convert POJO to json bytes

import com.alibaba.fastjson.JSON;

Model model = ...; 
byte[] jsonBytes = JSON.toJSONBytes(model);

write POJO as json string to OutputStream

import com.alibaba.fastjson.JSON;

Model model = ...; 
OutputStream os;
JSON.writeJSONString(os, model);

write POJO as json string to Writer

import com.alibaba.fastjson.JSON;

Model model = ...; 
Writer writer = ...;
JSON.writeJSONString(writer, model);

 

2、JSONObject 对象

JSONObject json=new JSONObject();
json.put("type","add");
json.put("desc","添加用户");
json.put("content",userBean);
String s=json.toJSONString();

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值