XML和JSON以及JSON解析(内附Jar包链接)精华!

在这里插入图片描述


前言

本文主要介绍JSON的作用,和在解析时的使用方法。
末尾附有工具下载链接哦,不可错过!


一、XML与JSON是什么?

JSON与XML 语言一样,都是供 不同语言编写的软件之间交流 的语言。
计算机编程已有半个多世纪的历史,被广泛使用的编程语言不下数十种,被发明的更是数不胜数。而不同语言编写的软件之间不可避免会产生数据交流,所以,就有了XML,JSON等标记语言的诞生。

随着时代的进步,JSON逐渐取代XML,被更广泛的应用,但XML并没有退出历史舞台,依旧在一些领域发挥着不可替代的作用。

1.XML

简要介绍一下XML语言。
可扩展标记语言(eXtensible Markup Language)。

特性:

  1. xml具有平台无关性, 是一门独立的标记语言.
  2. xml具有自我描述性(简单来说,随便看它一眼,就知道它是个什么东西,不用细细研究,它所包含的信息都净收眼底)

作用:

  1. 网络数据传输.
  2. 数据存储
  3. 配置文件

XML的语法格式

1. XML文档声明
   <?xml version="1.0" encoding="UTF-8"?>
   
2. 标记 ( 元素 / 标签 / 节点)
   XML文档,由一个个的标记组成.
语法:
    开始标记(开放标记): <标记名称>

    结束标记(闭合标记): </标记名称>

标记名称: 自定义名称,必须遵循以下命名规则:
    1.名称可以含字母、数字以及其他的字符
    2.名称不能以数字或者标点符号开始
    3.名称不能以字符 “xml”(或者 XML、Xml)开始
    4.名称不能包含空格,不能包含冒号(:)
    5.名称区分大小写

标记内容: 开始标记与结束标记之间 ,是标记的内容.
例如 ,我们通过标记, 描述一个人名:

    <name>唐纳德 普普子</name>

3. 一个XML文档中, 必须有且且仅允许有一个根标记.
正例:
<names>
      <name>张三</name>
      <name>李四</name>
</names>
反例:
      <name>李四</name>
      <name>麻子</name>
      
4. 标记可以嵌套, 但是不允许交叉.
正例:
<person>
     <name>李四</name>
    <age>18</age>
</person>

反例:
<person>
<name>李四<age></name>
18</age>
</person>

5. 标记的层级称呼 (子标记, 父标记 , 兄弟标记, 后代标记 ,祖先标记)
例如:
<persons>
   <person>
      <name>李四</name>
      <length>180cm</length>
  </person>
  <person>
      <name>李四</name>
      <length>200cm</length>
  </person>
</persons>
name是person的子标记.也是person的后代标记
name是persons的后代标记.
name是length的兄弟标记.
person是name的父标记.
persons是name的祖先标记.

6. 标记名称 允许重复
7. 标记除了开始和结束 , 还有属性.
标记中的属性, 在标记开始时 描述, 由属性名和属性值 组成.
格式:
在开始标记中, 描述属性.
可以包含0-n个属性, 每一个属性是一个键值对!
属性名不允许重复 , 键与值之间使用等号连接, 多个属性之间使用空格分割.
属性值 必须被引号引住.
案例:
<persons>
    <person id="10001" groupid="1">
       <name>李四</name>
       <age>18</age>
   </person>
   <person id="10002" groupid="1">
       <name>李四</name>
       <age>20</age>
   </person>
</persons>

8. 注释
注释不能写在文档文档声明前
注释不能嵌套注释
格式:
注释开始: <!--
注释结束: -->

2.JSON

JSON: (JavaScript Object Notation) 是一种轻量级的数据交换格式.

一个要传输的对象, 由一个大括号表示.
括号中 描述对象的属性 . 通过键值对来描述对象的属性
(可以理解为, 大括号中, 包含的是一个个的键值对.)

JSON的语法格式:

键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析.)
键值对的值, 可以是JS中的任意类型的数据:

  1. 数字(整数或浮点数)
  2. 逻辑值(true 或 false)
  3. 字符串(在双引号中)
  4. 数组(在方括号中)
  5. 函数
  6. 对象(在大括号中)
  7. null

以下,同一个对象(一本书 书名name 简介info)
的多种类型表达对比

//java:
class Book{
private String name;
private String info;
get/set...等方法
}
Book b = new Book();
b.setName(“《三体》”);
b.setInfo(“一曲文明的悲歌。”);

//js:
var b = new Object();
b.name = "《三体》";
b.info = "一曲文明的悲歌。";

XML:

<book>
  <name>《三体》</name>
  <info>一曲文明的悲歌。</info>
</book>

JSON:

{
"name":"《三体》",
"info":"一曲文明的悲歌。"
}

复杂一点的:

{
"name":"唐纳德·特朗普",
"nickname":"普普子",
"nickname":"大统领",
"hobit":["喝可乐","退群","向人们传授知识",{
        "name":"和希拉里亲切交谈",
        "info":"bitch!"
       }]
}

二. JSON解析

对象与JSON字符串之间的转换。
当前较常见的JSON解析方式有两种:

  1. Gson(由谷歌公司提供),
  2. FastJson(由阿里提供)。

详细Jar包引入见 三。

1.Gson

新建一个Book类,

//属性如下:
    private String id;
    private String name;
    private String info;
  //再构建Set/Get方法,toString,equals,无参/全参方法等
  //快捷键(右键 Generate)

a.将对象转换为JSON字符串

格式:

  1. 引入JAR包
  2. 在需要转换JSON字符串的位置编写如下代码即可:
    String json = new Gson().toJSON(要转换的对象);
package com.hahaha.demo2;
import com.google.gson.Gson;
/**
 * Created by alone on 2021/6/8.
 */
public class Demo1 {
    public static void main(String[] args) {
        /*//1.    创建Gson对象
        Gson g = new Gson();
        //2.    转换
        Book b = new Book("100","《三体》","一曲文明的悲歌");
        String s = g.toJson(b);
        System.out.println(s);*/

        //1.    创建Gson对象
        //2.    转换
        Book b = new Book("100","《三体》","一曲文明的悲歌");
        String s = new Gson().toJson(b);
        System.out.println(s);
    }
}

如图:
在这里插入图片描述

b.将JSON字符串转换为对象

格式:

  1. 引入JAR包
  2. 在需要转换Java对象的位置, 编写如下代码:
    对象 = new Gson().fromJson(JSON字符串,对象类型.class);
package com.hahaha.demo2;
import com.google.gson.Gson;
/**
 * Created by alone on 2021/6/8.
 */
public class Demo2 {
    public static void main(String[] args) {
        //1.    创建Gson对象
        Gson g = new Gson();
        //2.    转换  :  {"id":"100","name":"《三体》","info":"一曲文明的悲歌"}
        Book b = g.fromJson("{\"id\":\"100\",\"name\":\"《三体》\",\"info\":\"一曲文明的悲歌\"}", Book.class);
        System.out.println(b.getId());
        //直接打印 b ,得到Json键值对,与a相同
    }
}

如图:
在这里插入图片描述

2.Fastjson

a.将对象转换为JSON字符串

格式:

  1. 引入JAR包
  2. 在需要转换JSON字符串的位置编写如下代码即可:
    String json=JSON.toJSONString(要转换的对象);
package com.hahaha.demo2;
import com.alibaba.fastjson.JSON;

/**
 * Created by alone on 2021/6/8.
 */
public class Demo3 {
    public static void main(String[] args) {

        Book book = new Book("1002","唐诗三百首","床前明月光,地上鞋三双。床上我杰哥,喊十块钱一双。"); //杰哥是我老师,人帅又多金。家住东京市,总是喊热,要回来。
        //1.    转换
        String json = JSON.toJSONString(book);
        System.out.println(json);
    }
}

在这里插入图片描述

b.将JSON字符串转换为对象

格式:

  1. 引入JAR包
  2. 在需要转换Java对象的位置, 编写如下代码:
    类型 对象名=JSON.parseObject(JSON字符串, 类型.class);

    List<类型> list=JSON.parseArray(JSON字符串,类型.class);
package com.hahaha.demo2;

import com.alibaba.fastjson.JSON;
/**
 * Created by alone on 2021/6/8.
 */
public class Demo4 {
    public static void main(String[] args) {

        //1.    转换  : {"id":"1002","info":"床前明月光,地上鞋一堆。床上我杰哥,喊十块钱一双。","name":"唐诗三百首"}
        Book book = JSON.parseObject("{\"id\":\"1002\",\"info\":\"床前明月光,地上鞋三双。床上我杰哥,喊十块钱一双。\",\"name\":\"唐诗三百首\"}", Book.class);
        System.out.println(book.getId());

    }
}

效果同。

三.Jar包引入指导

在项目下新建 lib 文件夹,将两个Jar包直接粘贴进去
在项目下新建 lib 文件夹,将两个Jar包直接粘贴进去
引入
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
过程未有详尽之处还请包含,可搜索详尽图示资料。

四.Jar包下载链接

链接:https://pan.baidu.com/s/1VXhGtpzcFIAgAPcQXyf4MA
提取码:RNM4
复制这段内容后打开百度网盘手机App,操作更方便哦

总结

不总结了,打球去了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值