处理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看源码很不方便,所以就没去看了
这种工具类嘛,大同小异,使用起来都是一样的,我们也可以自己写一个,同时也可以在这个基础上对适用场景进行封装,这里推荐大家读源码,这种工具类源码读起来还是很简单的;
小结
希望大家支持下博主,三连一下吧♥