Fastjson 的使用总结

一.JSON 介绍

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。

JSON建构于两种结构:

  • “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
  • 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)

二.Fastjson 简介

Fastjson是阿里巴巴的开源JSON解析库,基于Java语言,支持JSON格式的字符串与JavaBean之间的相互转换。

fastjson 常用 API

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

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean 
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 
public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。

有关类库的一些说明

  • JSONArray : 相当于List
  • JSONObject: 相当于Map<String,Object>

JSONObject是JSON字符串与pojo对象转换过程中的中间表达类型,实现了Map接口,可以看做是一个模拟JSON对象键值对再加上多层嵌套的数据集合,对象的每一个基本类型属性是map里的一个key-value,一个非基本类型属性是一个嵌套的JSONObject对象(key是属性名称,value是表示这个属性值的对象的JSONObject)。如果以前用过apache beanutils里的DynamicBean之类的,就知道JSONObject也是一种动态描述Bean的实现,相当于是拆解了Bean本身的结构与数据。这时候由于JSONObject里可能会没有记录全部的Bean类型数据,例如泛型的具体子类型之类的元数据,如果JSONObject与正常的POJO混用,出现问题的概率较高。

JSON、JSONObject、JSONArray、javabean关系的解析:

首先JSON、JSONObject、JSONArray是属于FastJson框架的类,它们就是普通的类只不过在FastJson框架赋予了它们对json格式字符的处理能力。

JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。

JSONObject:fastJson提供处理对象样子的json字符的类。

JSONArray:fastJson提供处理数组样子的json字符的类。

当然你也可以不用JSONObject、JSONArray,直接将json字符串转换为能匹配上的javabean。如果你没有能匹配的那你就考虑转换为JSONObject、JSONArray,因为JSONObject、JSONArray也可以对属性进行操作。

JSON就是一串字符串 只不过元素会使用特定的符号标注。

{} 双括号表示对象;   [] 中括号表示数组

由于JSONObject和JSONArray继承了JSON,所以也可以直接使用两者对JSON格式字符串与JSON对象及javaBean之间做转换,不过为了避免混淆下面方法都使用JSON。

1.json字符 转换为 JSONObject

  JSONObject jsonObject = JSON.parseObject("对象样子的json字符");

 JSONObject jsonObject = JSONObject.fromObject("对象样子的json字符");

  String jsonStr1 = "{\"password\":\"12345\",\"username\":\"dmego\"}";
        User user = JSON.parseObject(jsonStr1, User.class);
        System.out.println("json字符串转简单java对象:"+user.toString());

2.json字符 转换为 JSONArray

JSONArray jsonArray = JSON.parseArray("数组样子的json字符"); 

JSONArray jsonArray = JSONArray .fromObject("数组样子的json字符");  
 

/*
         * json字符串转List<Object>对象
         * 字符串:[{"password":"123123","username":"zhangsan"},{"password":"321321","username":"lisi"}]
         */
        String jsonStr2 = "[{'password':'123123','username':'zhangsan'},{'password':'321321','username':'lisi'}]";
        List<User> users = JSON.parseArray(jsonStr2, User.class);
        System.out.println(users.toString());
        JSON.parseArray(jsonStr2);

JSON最佳实践

https://juejin.cn/post/6844903605279932423#heading-1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值