1.先下载jar包,其中两个比较常用:谷歌Gson和阿里的FastJson(阿里1.2.69出了个高危漏洞,不过现在应该已经修复了)
百度搜索这两个,寻找github的开源地址(最好用chrome浏览器)
直接download那两个jar文件 然后放入你的工程lib包里
2.现在咱们写一个实体类,比如书本
import java.util.Objects;
public class Book {
private String id;
private String name;
private String info;
public Book(String id, String name, String info) {
this.id = id;
this.name = name;
this.info = info;
}
public Book() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public String toString() {
return "Book{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", info='" + info + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Book book = (Book) o;
return Objects.equals(id, book.id) && Objects.equals(name, book.name) && Objects.equals(info, book.info);
}
@Override
public int hashCode() {
return Objects.hash(id, name, info);
}
}
3. oker,现在咱们来写一个谷歌Gson的demo
import com.google.gson.Gson;
/**
* 解析json
* 怎样将对象变成json格式的字符串
*/
public class demo1 {
public static void main(String[] args) {
//gson谷歌的方式:
//1,先创建Gson对象
Gson g = new Gson();
//2, 转换
Book book = new Book("1001","三体","讲述黑暗森林法则与宇宙社会学");
String str = g.toJson(book);
System.out.println(str);
}
}
4.那转换回来咋整,很简单:
import com.google.gson.Gson;
/**
* 解析json
* 怎样将json格式的字符串变成对象
*/
public class demo2 {
public static void main(String[] args) {
//gson谷歌的方式:
//1,先创建Gson对象
Gson g = new Gson();
//2, 转换 {"id":1001,"name":"三体","info":"讲述黑暗森林法则与宇宙社会学"}
Book b = g.fromJson("{\"id\":1001,\"name\":\"三体\",\"info\":\"讲述黑暗森林法则与宇宙社会学\"}", Book.class);
System.out.println(b.getId());
}
}
数据里面也可以嵌套包含数组(类型会自动变成arraylist哦)
import com.google.gson.Gson;
import java.util.HashMap;
/**
* 解析json
* 怎样将json格式的字符串变成对象
*/
public class demo3 {
public static void main(String[] args) {
//gson谷歌的方式:
//1,先创建Gson对象
Gson g = new Gson();
//2, 转换 {"id":1001,"name":"三体","info":"讲述黑暗森林法则与宇宙社会学","page":["锄禾日当午","汗滴禾下土",12,"嘿嘿嘿"]}
HashMap data = g.fromJson("{\"id\":1001,\"name\":\"三体\",\"info\":\"讲述黑暗森林法则与宇宙社会学\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",12,\"嘿嘿嘿\"]}", HashMap.class);
System.out.println(data.get("page").getClass());
}
}
5.现在让咱们看看ali的fastjson jar包咋整,很简单
import com.alibaba.fastjson.JSON;
/**
* 解析json
* 怎样将json格式的对象变成字符串
*/
public class demo4 {
public static void main(String[] args) {
//fastjson阿里巴巴的方式:
Book book = new Book("1002", "finance","money makes money");
//1 转换
String json = JSON.toJSONString(book);
System.out.println(json);
}
}
字符变回来也和前面逻辑差不多:
import com.alibaba.fastjson.JSON;
/**
* 解析json
* 怎样将json格式的字符串变成对象
*/
public class demo5 {
public static void main(String[] args) {
//fastjson阿里巴巴的方式:
//1 转换 {"id":"1002","info":"money makes money","name":"finance"}
Book b = JSON.parseObject("{\"id\":\"1002\",\"info\":\"money makes money\",\"name\":\"finance\"}\n", Book.class);
System.out.println(b.getId());
}
}
import com.alibaba.fastjson.JSON;
import java.util.List;
/**
* 解析json
* 怎样将jsons数组
*/
public class demo6 {
public static void main(String[] args) {
//fastjson阿里巴巴的方式:
//1 转换 ["1","2","3","4","5"]
List<String> lt = JSON.parseArray("[\"1\",\"2\",\"3\",\"4\",\"5\"]", String.class);
System.out.println(lt.get(1));
}
}
以上便是json解析很简单的逻辑,之后会发布较为复杂的代码。
下面拓展一些经典老古董,xml语法和解析。作为了解就行:
public class xml语法格式 {
//笔记:
/**
* 1 文档声明 (描述必须放在第一行)
* <?xml version = "1.0" encoding = "UTF-8"?>
* 规范:<?xml 版本信息(编码信息)(文档独立性信息)?>
*/
/**
* 2 元素
* XML的基本组成单位是元素,元素由标记来定义,标记包括起始标记<标记名称>和结束标记</标记名称>,属性要写在起始标记内。
* 在XML中,所有元素必须有结束标记
*
* 只能有一个根标记
* 如:
* <names> <- 根标记
* <name>伊隆马斯克</name>
* <name>扎克伯格</name>
* </names> <- 根标记
*
* 语法样式:
* <元素名 属性名=“属性值”(a=b是一个键值对)>
* 元素内容
* </元素名>
*/
/**
* 3 标记之间只能嵌套不能交叉
* 而且有子父关系,兄弟标记,后代,祖先不标记。。。
* 标记名称也可以重复
*/
/**
* 4 注释格式:
* <!-- 开始
* --> 结束
*/
}
import javax.sql.rowset.spi.XmlWriter;
// lib要放三个jar:dom4j,jaxen,xstream.jar...
/**
* xml是可扩展标记语言 extensible markup language
* 特性:平台无关性,独立的标记语言。具有自我描述性
* why learn it? 网络数据传输,数据储存,配置文件
* xml文件是保存xml数据的一种方式
* xml可以在内存中构建xml数据等方式存在,不要单纯理解其为xml文件
*/
public class xml {
//XML的解析
/**
* XML的解析
* DOM4J解析XML掌握
* Steps:
* 1: 引入jar文件 dom4j.jar
* 2: 创建一个指向XML文件的文件输入流 (如果是网络传输的流直接读取)
* FileInputStream fis = new FileInputStream("xml文件的地址")
* 3: 创建一个xml读取工具对象
* SAXReader sr = new SAXReader();
* 4: 然后用读取对象的read方法去读文件输入流fis, 得到一个Document类的文档对象
* Document doc = sr.read(fis);
* 5: 最后得到文档中的根元素对象, 得到元素类对象root
* Element root = doc.getRootElement(); 然后就可以运用这个对象的很多方法了
*/
//java代码形成xml
/**
* 1
* Document doc = DocumentHelper.createDocument();
* Element root = doc.addElement("根结点名称");
* Element e = root.addElement("元素名称");
* FileOutputStream fos = new FileOutputStream("要存储的位置");
* XMLWriter xw = new XMLWriter(fos);
* xw.write(doc);
* xw.close();
*/
public static void main(String[] args) {
//XStream (用对象生成xml)
//1. new 某个实体类人 如:Person p
//2,new XStream对象
// XStream x = new XStream();
//3 修改某个类型生成的节点(可选的,默认是包名.类名)
//x.alias(name:"person",Person.class);
//4 传入对象,开始生成
//String xml = x.toXML(p);
//sout(xml);
}
}
|