FastJson

  1. FastJson 介绍
    在前端与后端、服务与服务之间的数据传输,经常会遇到一些很不好处理的Json格式数据;Json是以跨语言的形式,在数据交互之间频繁使用;其中Json有Fastjson、Jackson、Gson常用的开源库,这里我们主要介绍FastJson。
    FastJson是阿里巴巴开源库,用于对JSON格式的数据进行解析和打包。
    FastJson在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。
    FastJson采用独创的算法,将parse的速度提升到极致,超过所有json库
  2. 引入依赖
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <!-- 建议使用1.2.83,以下会出现反序列化漏洞 -->
    <version>版本根据自己需要</version>
</dependency>
  1. 常用API
public static final Object parse(String text); 

public static final JSONObject parseObject(String text);
    
public static final <T> T parseObject(String text, Class<T> clazz);

public static final JSONArray parseArray(String text); 

public static final <T> List<T> parseArray(String text, Class<T> clazz); 

public static final String toJSONString(Object object); 

public static final String toJSONString(Object object, boolean prettyFormat); 

public static final Object toJSON(Object javaObject); 

  1. 使用
    a. Json转换对象
@Data
public class Result implements Serializable {

    private static final long serialVersionUID = -7058259606180978358L;

    private Integer code;

    private LocalDateTime time;

    private List<UserContent> message;

    private String content;

    private boolean type;
}

@Data
public class UserContent implements Serializable {
    private static final long serialVersionUID = 929634563977013080L;
    private String username;
}

例:

{
	"code":200,
	"content":"1",
	"message":[
		{
			"username":"小白"
		}
	],
	"time":1679244854532,
	"type":true
}

使用JSONObject.parseObject():

JSONObject jsonObject = JSONObject.parseObject(str);
String code = jsonObject.getString("code");


String getString(String key);

// 获取json中的message数组
JSONArray jsonArray = jsonObject.getJSONArray("message");
// 获取json中的content String类型
String content = jsonObject.getString("content");
// 获取json中的code int类型
int code = jsonObject.getIntValue("code");
// 获取json中的type boolean类型
boolean type = jsonObject.getBoolean("type");

Json转换为实体类:

Result result = JSONObject.parseObject(str, Result.class);
// 当str是一个json数组时
List<Result> results = JSONObject.parseArray(str, Result.class);

b. 对象转换为Json

public void test() {
    ArrayList<UserContent> userContents = new ArrayList<>();
    UserContent userContent = new UserContent();
    userContent.setUsername("小白");
    userContents.add(userContent);

    Result result = new Result();
    result.setCode(200);
    result.setContent("1");
    result.setTime(LocalDateTime.now());
    result.setMessage(userContents);
    result.setType(true);

    String s = JSONObject.toJSONString(result);
    System.out.println(s);
}

// 结果:
{
	"code":200,
	"content":"1",
	"message":[
		{
			"username":"小白"
		}
	],
	"time":1679244854532,
	"type":true
}
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值