> 文档中心 > 处理JSON,fastjson、json-lib简单使用

处理JSON,fastjson、json-lib简单使用


处理JSON-fastjson、json-lib简单使用

文章目录

  • 处理JSON-fastjson、json-lib简单使用
    • 前言
    • 生成json文件
    • 结果
    • 解析读取json文件
    • 结果
    • FastJson
  • 小结

前言

json更不用说,现在我们传输数据基本上都是json数据,前后端交互,以及短暂存储,主要就是很方便;

生成json文件

同样的两种方法:

1、字符串拼接

2、在字符串的基础上进行封装的工具类,这里我最开始使用的是json-lib-2.1-jdk15.jar这个类,现在比较火的也有阿里的fastjson全部都大同小异,我们来看下:

两个环境依赖:

链接:https://pan.baidu.com/s/1XH22FXPFY54hpamAvB2pcA?pwd=kp45 提取码:kp45

fastjson

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

一个man对象

package com.tongxunlu;/*** @author 作者 :学习日记* 类说明: man联系人实体类*/public class Man {private String name;private String phone;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public Man(String name, String phone) {super();this.name = name;this.phone = phone;}public Man() {super();}}

我们先不使用fastjson:

//存入json数据//创建数据List<Man> mans = new ArrayList<Man>();for (int i = 0; i < 3; i++) {    Man man = new Man("学习日记" , "27392189");    mans.add(man);}// 1.创建一个JSONObeject对象,作为根节点rootJSONObject  root = new JSONObject();//创建一个json数组对象,我们知道json里就两种格式//1.节点对象//2.数组JSONArray peoples  = new JSONArray();//将数据添加进去for (Man man : mans) {    int i = 0;    //创建一个个对象,然后放入数组    JSONObject people = new JSONObject();    people.put("name", man.getName());    people.put("phone", man.getPhone());    JSONObject  p = new JSONObject();    p.put("people", people);    //因为是数组我们添加下下标,然后放入数组    peoples.add(i,p);}//将数组放入根节点root.put("peoples", peoples);//实质就是帮你拼接字符串System.out.println(root.toString());//保存文件File file = new File("test.json");try {    BufferedWriter bWriter = new BufferedWriter(new FileWriter(file));    bWriter.write(root.toString());    bWriter.close();} catch (Exception e) {    e.printStackTrace();}

结果

输出了拼接的字符传同时也传入了文件:

在这里插入图片描述

{    "peoples":    [ {     "people":     {"phone":"27392189","name":"学习日记"} }, {     "people":     {"phone":"27392189","name":"学习日记"} }, {     "people":{"phone":"27392189","name":"学习日记"} }    ]}

解析读取json文件

总之,怎么存进去的就怎么读出来

// 取json文件// 创建读取的集合List<Man> mans = new ArrayList<Man>();try {    //读取文件    BufferedReader reader = new BufferedReader(new FileReader(new File("test.json")));    String json = reader.readLine();    // System.out.println(json);    //通过JSONObject.fromObject()将这个转化为json对象    JSONObject root = JSONObject.fromObject(json);    //像刚才加进去一下,解析出来即可    JSONArray peoples = root.getJSONArray("peoples");    if (peoples != null || peoples.size() != 0) { for (int i = 0; i < peoples.size(); i++) {     //拿到刚才我们的i值     JSONObject jsonObjects = JSONObject.fromObject(peoples.get(i));     JSONObject jsonObject = jsonObjects.getJSONObject("people");     Man man = new Man(jsonObject.getString("name"), jsonObject.getString("phone"));     mans.add(man); }    }} catch (Exception e) {    e.printStackTrace();}//打印内容System.out.println("姓名" + "\t" + "\t" + "电话");for (Man man : mans) {    System.out.println(man.getName() + "\t" + "\t" + man.getPhone());}

结果

成功读取:

在这里插入图片描述

FastJson

FastJson用起来挺多的常用来做处理json文件,所以我们也来了解下:

这里测试了,阿里的FastJson创建json文件,跟我们刚才是一样的,代码都没变,工具类嘛,都差不多:

在这里插入图片描述

解析就不一样了,我们看一下

  • 只是将JSONObject.fromObject(peoples.get(i))变成了JSONObject.parseObject(json);

  • 同时JSONObject.fromObject(peoples.get(i))不能这样使用,因为没有fromObject方法,但是为了不报错这样强转一下,这里肯定是有一个方法的(JSONObject) peoples.get(i);因为在使用的时候用的是eclipse看源码很不方便,所以就没去看了

这种工具类嘛,大同小异,使用起来都是一样的,我们也可以自己写一个,同时也可以在这个基础上对适用场景进行封装,这里推荐大家读源码,这种工具类源码读起来还是很简单的;

小结

希望大家支持下博主,三连一下吧♥