Json的使用方式

Json在传输数据的时候要比XML效率高一些
简介:JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.
对象格式
一本书
书名
简介
Java中的格式

class Book{
private String name;
private String info;

get/set...
}
Book b = new Book();
b.setName(“三国演义”);
b.setInfo(“争天下”);

js的写法

js:
var b = new Object();
b.name = "三国演义";
b.info = "争天下";

XML的写法

XML:
<book>
<name>金苹果</name>
<info>种苹果</info>
</book>

JSON的写法
大括号就表示一个对象

JSON:
{
"name":"金苹果",
"info":"种苹果"
}

使用规则
一个对象, 由一个大括号表示.
括号中 描述对象的属性 . 通过键值对来描述对象的属性
(可以理解为, 大括号中, 包含的是一个个的键值对.)
格式:
键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解
析.)
键值对的值, 可以是JS中的任意类型的数据

数组格式
在JSON格式中可以与对象互相嵌套 [元素1,元素2…]
例如

{
"name":"张无",
"age":18,
"pengyou":["张三","李四","王二","麻子",{
"name":"赵四",
"info":"魔性"
}],
"heihei":{
"name":"大长刀",
"length":"40m"
}
}

例如找一个免费的API开放平台
https://wx.jdcloud.com/market/datas/26/10610
然后找一个json解析平台
https://www.bejson.com/jsonviewernew/
然后点开Json视图,解析如图层级关系如图
在这里插入图片描述
JSON解析主要有两种一种是Google的Gson,另一种是阿里的FastJson
一般Gson的效果会好一点‘
JSON解析的作用’

将Java中的对象 快速的转换为 JSON格式的字符串. 将JSON格式的字符串, 转换为Java的对象.>

因为Java官方没有封装相应的jar包,所以需要自己下载相应的包导入,在博客的下载链接中有一个json的压缩包,我已经上传 了需要的可以下载里边包含了Gson的包和FastJson的jar包

Gson使用方式

将对象转换为JSON字符串
转换JSON字符串的步骤:

  1. 引入JAR包
  2. 在需要转换JSON字符串的位置编写如下代码即可:
    String json = new Gson().toJSON(要转换的对象);
    案例:
    导入json jar包的方式
    在这里插入图片描述
    在这里插入图片描述
    没有lib文件夹的情况下先创建一个lib文件夹然后导入jar包
    在这里插入图片描述
    在这里插入图片描述
    将对象转换为JSON字符串
    在这里插入图片描述
import com.google.gson.Gson;

public class Demo {
    public static void main(String[] args) {
      //1创建Gson对象
        Gson g=new Gson();
        // 2 转换
        Book b=new Book(1,"三国演义","三国纷争");
        String s=g.toJson(b);
        System.out.println(s);

    }
}
class  Book{
    private int id;
    private   String name;
    private String info;
    public Book(int id, String name, String info) {
        this.id = id;
        this.name = name;
        this.info = info;
    }

    public Book() {
    }

    public int getId() {
        return id;
    }

    public void setId(int 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 + '\'' +
                '}';
    }
}

将字符串转换回对象去
在这里插入图片描述

import com.google.gson.Gson;

public class Demo {
    public static void main(String[] args) {
      //1创建Gson对象
        Gson g=new Gson();
        // 2 转换  将字符串转换回对象去  "id":1,"name":"三国演义","info":"三国纷争"
      /*  Book b=new Book(1,"三国演义","三国纷争");
        String s=g.toJson(b);
        System.out.println(s);*/
       Book b=g.fromJson("{\"id\":1,\"name\":\"三国演义\",\"info\":\"三国纷争\"}",Book.class);
        System.out.println(b.getName());
    }
}
class  Book{
    private int id;
    private   String name;
    private String info;
    public Book(int id, String name, String info) {
        this.id = id;
        this.name = name;
        this.info = info;
    }

    public Book() {
    }

    public int getId() {
        return id;
    }

    public void setId(int 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 + '\'' +
                '}';
    }
}
import com.google.gson.Gson;

public class Demo {
    public static void main(String[] args) {
      
        //如果对象只使用一次,那么就可以用匿名类型
        Book b=new Book(1,"三国演义","三国纷争");
        String s=new Gson().toJson(b);
        System.out.println(s);
    }
}
class  Book{
    private int id;
    private   String name;
    private String info;
    public Book(int id, String name, String info) {
        this.id = id;
        this.name = name;
        this.info = info;
    }

    public Book() {
    }

    public int getId() {
        return id;
    }

    public void setId(int 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 + '\'' +
                '}';
    }
}

转集合的方式,案例
在这里插入图片描述

import com.google.gson.Gson;

import java.util.HashMap;

public class Demo {
    public static void main(String[] args) {

        //将字符串转换为集合的形式
       Gson g=new Gson();
       //2转换
      HashMap data=g.fromJson("{\"id\":1,\"name\":\"三国演义\",\"info\":\"三国纷争\"}", HashMap.class);
        System.out.println(data.get("name"));
    }
}
class  Book{
    private int id;
    private   String name;
    private String info;
    public Book(int id, String name, String info) {
        this.id = id;
        this.name = name;
        this.info = info;
    }

    public Book() {
    }

    public int getId() {
        return id;
    }

    public void setId(int 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 + '\'' +
                '}';
    }
 }

在对象中添加一个数组此时,在转的时候会转成ArrayList
,

在这里插入图片描述

import com.google.gson.Gson;

import java.util.HashMap;
import java.util.List;

public class Demo {
    public static void main(String[] args) {

        //将字符串转换为集合的形式
       Gson g=new Gson();
       //2转换  {"id":1,"name":"三国演义","info":"三国纷争,","page":["床前明月光","疑是地上霜"]}
      HashMap data=g.fromJson("{\"id\":1,\"name\":\"三国演义\",\"info\":\"三国纷争,\",\"page\":[\"床前明月光\",\"疑是地上霜\"]}", HashMap.class);
        System.out.println(data.get("page"));
        System.out.println(data.get("page").getClass());
        List page= (List) data.get("page");
        System.out.println(page.get(1));
    }
}
class  Book{
    private int id;
    private   String name;
    private String info;
    public Book(int id, String name, String info) {
        this.id = id;
        this.name = name;
        this.info = info;
    }

    public Book() {
    }

    public int getId() {
        return id;
    }

    public void setId(int 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 + '\'' +
                '}';
    }
}

使用FastJson
转换为字符串,再由字符串转换为对象

import com.alibaba.fastjson.JSON;
public class Demo {
    public static void main(String[] args) {
        //FastJson 的使用
       Book b=new Book(10,"水浒传","英雄好汉");
        String json=  JSON.toJSONString(b);
        System.out.println(json);
        //转换成对象
        JSON.parseObject("{\"id\":10,\"info\":\"英雄好汉\",\"name\":\"水浒传\"}",Book.class);
        System.out.println(b.getName());
    }
}
class  Book{
    private int id;
    private   String name;
    private String info;
    public Book(int id, String name, String info) {
        this.id = id;
        this.name = name;
        this.info = info;
    }

    public Book() {
    }

    public int getId() {
        return id;
    }

    public void setId(int 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 + '\'' +
                '}';
    }
}

把数组转换为集合

import com.alibaba.fastjson.JSON;

import java.util.List;

public class Demo {
    public static void main(String[] args) {
        //FastJson 的使用

        //转换为集合  ["123", "456" ,"789"]
        List string=JSON.parseArray(" [\"123\", \"456\" ,\"789\"]",String.class);
        System.out.println(string.get(1));
    }
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨里的无聊人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值