JSON解析与xml的简述

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);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值