Json的使用方式

凌晨裡的無聊人發表於2020-11-04

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

相關文章