欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:語法篇-JSON基礎(chǔ)

柚子快報激活碼778899分享:語法篇-JSON基礎(chǔ)

http://yzkb.51969.com/

一、JSON初識

1.1基礎(chǔ)認識

????????JSON是一種輕量級的數(shù)據(jù)交換格式,它基于JavaScript語言的對象表示法,可以在多種語言之間進行數(shù)據(jù)交換。JSON的基本數(shù)據(jù)類型有數(shù)值、字符串、布爾值、數(shù)組、對象和空值。JSON的格式簡潔易讀,也易于解析和處理。JSON的標準文件擴展名是.json

采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)。

????????然而,不是所有的系統(tǒng)都支持使用JSON來交換數(shù)據(jù)。數(shù)據(jù)交換格式有很多,如前面提到的XML (extensible markup language,可擴展性標記語言),可能早在JSON被發(fā)明前就已 經(jīng)在應(yīng)用了。有許多系統(tǒng)可以并還在使用像XML這樣的格式,或是用表格 和分隔符來表示 數(shù)據(jù)的格式,如逗號分隔值(CSV)。

1.2JSON語法

1.2.1專業(yè)術(shù)語及概念

●對象表示為鍵值對,數(shù)據(jù)由逗號分隔 ●花括號保存對象 ●方括號保存數(shù)組

1.2.2JSON基于JavaScript對象字面量

數(shù)據(jù)交換格式的核心是數(shù)據(jù), 所以 JSON中并不會涉及JavaScript對象字面量中的函數(shù)。JSON所基于的JavaScript對象字面量單純指對象字面量及其屬性的語法表示。這種屬性表示方法也就是通過名稱-值對來實現(xiàn)的?

1.2.3名稱-值對

?1.2.4正確的JSON語法

屬性名可以包含下劃線(_?)?或數(shù)字,但是大多數(shù)情況下?最好是使用英文字母A-Z或a-z

在JSON中, 名稱兩邊的雙引號卻是必須要加的。

不同于名稱,?值并不總是需要被雙引號包裹。當值是字符串時,必須使用雙引號。而在JSON?中,還有數(shù)字、?布爾值、數(shù)組、對象、null?等其他數(shù)據(jù)類型,這些都不應(yīng)被雙引號包裹。

1.2.5語法驗證

網(wǎng)上驗證工具

1.2.6JSON文件

JSON這種數(shù)據(jù)交換格式是可以作為獨立的文件存在于文件系統(tǒng)中的。它的文件擴展名非常好記: .json.

1.2.7JSON媒體類型

?1.3JSON的數(shù)據(jù)類型

1.3.1概述

原始數(shù)據(jù)類型復(fù)合數(shù)據(jù)類型

枚舉數(shù)據(jù)類型對象數(shù)據(jù)類型

1.3.2JSON?中的數(shù)據(jù)類型包括

對象字符串數(shù)字布爾值null數(shù)組

?1.3.3對象數(shù)據(jù)類型

?1.3.4字符串數(shù)據(jù)類型

舉例

?1.3.5數(shù)字數(shù)據(jù)類型

1.3.6?布爾數(shù)據(jù)類型

1.3.7?null類型

1.3.8?數(shù)組數(shù)據(jù)類型

?1.3.9總結(jié)

?1.4JSON和JS的區(qū)別

1.5JSON和JS對象互轉(zhuǎn)

二、JSON處理

2.1數(shù)據(jù)類型

2.2常見解析輪子

2.3JSON主要用途

JSON生成JSON解析JSON校驗和Java?Bean對象進行互解析

具有一個無參的構(gòu)造函數(shù)可以包括多個屬性,所有屬性都是private每個屬性都有相應(yīng)的Getter/Setter方法、Java?Bean用于封裝數(shù)據(jù),又可稱為POJO(Plain?Old?Java?Object)

2.4JSON和XML比較

2.5基于org.json的解析

2.5.1 配置文件

org.json

json

20210307

2.5.2所用json文件

{

"books": [

{

"author": "J.K. Rowling",

"title": "Harry Potter and the Sorcerer's Stone",

"year": "1997",

"price": 25,

"category": "Fantasy"

},

{

"author": "George Orwell",

"title": "1984",

"year": "1949",

"price": 15,

"category": "Dystopian Fiction"

}

]

}

2.5.3輔助類

package org.example;

public class Book {

private String category;

private String title;

private String author;

private String year;

private int price;

public String getCategory() {

return category;

}

public void setCategory(String category) {

this.category = category;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getAuthor() {

return author;

}

public void setAuthor(String author) {

this.author = author;

}

public String getYear() {

return year;

}

public void setYear(String year) {

this.year = year;

}

public int getPrice() {

return price;

}

public void setPrice(int price) {

this.price = price;

}

@Override

public String toString(){

return "Book [category=" + category + ", title=" + title + ", author=" + author

+ ", year=" + year + ", price=" + price + "]";

}

}

package org.example;

import java.util.List;

public class Person {

private String name;

private int age;

private List scores;

public Person(){

}

public Person(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public List getScores() {

return scores;

}

public void setScores(List scores) {

this.scores = scores;

}

}

2.5.4解析類

package org.example;

import org.json.JSONArray;

import org.json.JSONObject;

import java.io.File;

import java.io.FileReader;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

/**

* 使用 org.json 包來解析 JSON 示例

* @author Tom

*/

public class OrgJsonTest {

public static void main(String[] args) {

testJsonObject();

System.out.println("=========華麗麗的分割線==============");

testJsonFile();

}

public static void testJsonObject() {

// 構(gòu)造對象

Person p = new Person();

p.setName("Tom");

p.setAge(20);

p.setScores(Arrays.asList(60, 70, 80));

// 構(gòu)造 JSONObject 對象

JSONObject obj = new JSONObject();

obj.put("name", p.getName());

obj.put("age", p.getAge());

obj.put("scores", p.getScores());

// 輸出 JSON 對象內(nèi)容

System.out.println(obj);

System.out.println("name: " + obj.getString("name"));

System.out.println("age: " + obj.getInt("age"));

System.out.println("scores: " + obj.getJSONArray("scores"));

}

public static void testJsonFile() {

File file = new File("D:\\workspace-java\\untitled4\\src\\main\\resources\\books.json");

try (FileReader reader = new FileReader(file)) {

// 讀取文件內(nèi)容到 Json0bject 對象中

int fileLen = (int) file.length();

char[] chars = new char[fileLen];

reader.read(chars);

String content = String.valueOf(chars);

// 解析 JSON 對象

JSONObject jsonObject = new JSONObject(content);

JSONArray books = jsonObject.getJSONArray("books");

List bookList = new ArrayList<>();

for (Object book : books) {

// 獲取單個 JSONObject 對象

JSONObject bookObject = (JSONObject) book;

Book book1 = new Book();

book1.setAuthor(bookObject.getString("author"));

book1.setYear(bookObject.getString("year"));

book1.setTitle(bookObject.getString("title"));

book1.setPrice(bookObject.getInt("price"));

book1.setCategory(bookObject.getString("category"));

bookList.add(book1);

}

// 輸出解析結(jié)果

for (Book book : bookList) {

System.out.println(book.getAuthor() + ", " + book.getTitle());

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

2.6基于GSON的解析

2.6.1配置文件

com.google.code.gson

gson

2.8.8

2.6.2解析類

package org.example;

import java.io.File;

import java.io.FileReader;

import java.util.Arrays;

import java.util.List;

import com.google.gson.Gson;

import com.google.gson.JsonArray;

import com.google.gson.JsonObject;

import com.google.gson.JsonParser;

import com.google.gson.reflect.TypeToken;

public class GsonTest {

public static void main(String[] args) {

testJsonObject();

System.out.println("=========華麗麗的分割線==========");

testJsonFile();

}

public static void testJsonObject() {

// 構(gòu)造對象

Person p = new Person();

p.setName("Tom");

p.setAge(20);

p.setScores(Arrays.asList(60, 70, 80));

// 從Java對象到JSON字符串

Gson gson = new Gson();

String s = gson.toJson(p);

System.out.println(s); // {"name":"Tom","age":20,"scores":[60,70,80]}

// 從JSON字符串到Java對象

Person p2 = gson.fromJson(s, Person.class);

System.out.println(p2.getName()); // Tom

System.out.println(p2.getAge()); // 20

System.out.println(p2.getScores()); // [60, 70, 80]

// 調(diào)用GSON的JsonObject

JsonObject json = gson.toJsonTree(p).getAsJsonObject();

System.out.println(json.get("name")); // "Tom"

System.out.println(json.get("age")); // 20

System.out.println(json.get("scores")); // [60, 70, 80]

}

public static void testJsonFile() {

Gson gson = new Gson();

File file = new File("D:\\workspace-java\\untitled4\\src\\main\\resources\\books.json");

try (FileReader reader = new FileReader(file)) {

// 將JSON文件內(nèi)容解析成List對象

// List books = gson.fromJson(reader, new TypeToken>(){}.getType());

// 解析根元素的 JSON 對象

JsonObject rootObject = JsonParser.parseReader(reader).getAsJsonObject();

// 獲取 "books" 屬性對應(yīng)的 JSON 數(shù)組

JsonArray booksArray = rootObject.getAsJsonArray("books");

List books = gson.fromJson(booksArray, new TypeToken>(){}.getType());

for (Book book : books) {

System.out.println(book.getAuthor() + ", " + book.getTitle());

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

2.6.3所用json文件

[

{

"author": "Author 1",

"title": "Title 1"

},

{

"author": "Author 2",

"title": "Title 2"

},

{

"author": "Author 3",

"title": "Title 3"

}

]

2.7基于jackson的解析

2.7.1配置

com.fasterxml.jackson.core

jackson-core

2.12.5

com.fasterxml.jackson.core

jackson-databind

2.12.5

com.fasterxml.jackson.core

jackson-annotations

2.12.5

2.7.2解析類

package org.example;

import java.io.File;

import java.io.IOException;

import java.util.Arrays;

import java.util.List;

import com.fasterxml.jackson.core.type.TypeReference;

import com.fasterxml.jackson.databind.JsonNode;

import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonTest {

public static void main(String[] args) throws Exception {

testJsonObject();

System.out.println("=========華麗麗的分割線==============");

testJsonFile();

}

static void testJsonObject() throws IOException {

ObjectMapper om = new ObjectMapper();

// 構(gòu)造一個 Person 對象

Person p = new Person();

p.setName("Tom");

p.setAge(20);

p.setScores(Arrays.asList(60, 70, 80));

// 將 Person 對象解析為 JSON 字符串

String jsonStr = om.writeValueAsString(p);

System.out.println(jsonStr);

// 從 JSON 字符串重構(gòu)為 Person 對象

Person p2 = om.readValue(jsonStr, Person.class);

System.out.println("Name: " + p2.getName());

System.out.println("Age: " + p2.getAge());

System.out.println("Scores: " + p2.getScores());

// 從 JSON 字符串重構(gòu)為 JsonNode 對象

JsonNode node = om.readTree(jsonStr);

System.out.println("Name from JsonNode: " + node.get("name").asText());

System.out.println("Age from JsonNode: " + node.get("age").asText());

System.out.println("Scores from JsonNode: " + node.get("scores"));

}

static void testJsonFile() throws IOException {

ObjectMapper om = new ObjectMapper();

// 從 JSON 文件中加載,并重構(gòu)為 Java 對象

File jsonFile = new File("D:\\workspace-java\\untitled4\\src\\main\\resources\\books2.json");

List books = om.readValue(jsonFile, new TypeReference>() {

});

// 打印書籍信息

for (Book book : books) {

System.out.println("Author: " + book.getAuthor());

System.out.println("Title: " + book.getTitle());

}

}

}

2.8基于fastjson的解析

fastjson.jar是阿里開發(fā)的一款專門用于Java開發(fā)的包,可以方便的實現(xiàn)json對象與JavaBean對象的轉(zhuǎn)換,實現(xiàn)JavaBean對象與json字符串的轉(zhuǎn)換,實現(xiàn)json對象與json字符串的轉(zhuǎn)換。實現(xiàn)json的轉(zhuǎn)換方法很多,最后的實現(xiàn)結(jié)果都是一樣的。

2.8.1配置

com.alibaba

fastjson

1.2.60

?2.8.2解析類

fastjson 三個主要的類:

JSONObject ?代表 json 對象

JSONObject實現(xiàn)了Map接口, 猜想 JSONObject底層操作是由Map實現(xiàn)的。 JSONObject對應(yīng)json對象,通過各種形式的get()方法可以獲取json對象中的數(shù)據(jù),也可利用諸如size(),isEmpty()等方法獲取"鍵:值"對的個數(shù)和判斷是否為空。其本質(zhì)是通過實現(xiàn)Map接口并調(diào)用接口中的方法完成的。

JSONArray ? 代表 json 對象數(shù)組

內(nèi)部是有List接口中的方法來完成操作的。

JSON代表 JSONObject和JSONArray的轉(zhuǎn)化

JSON類源碼分析與使用 仔細觀察這些方法,主要是實現(xiàn)json對象,json對象數(shù)組,javabean對象,json字符串之間的相互轉(zhuǎn)化。

2.8.2測試類

package org.example;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

//需要導(dǎo)入lombok

@Data

@AllArgsConstructor

@NoArgsConstructor

public class User {

private String name;

private int age;

private String sex;

}

package org.example;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;

import java.util.ArrayList;

import java.util.List;

public class FastJsonDemo {

public static void main(String[] args) {

//創(chuàng)建一個對象

User user1 = new User("1號", 3, "男");

User user2 = new User("2號", 3, "男");

User user3 = new User("3號", 3, "男");

User user4 = new User("4號", 3, "男");

List list = new ArrayList();

list.add(user1);

list.add(user2);

list.add(user3);

list.add(user4);

System.out.println("*******Java對象 轉(zhuǎn) JSON字符串*******");

String str1 = JSON.toJSONString(list);

System.out.println("JSON.toJSONString(list)==>"+str1);

String str2 = JSON.toJSONString(user1);

System.out.println("JSON.toJSONString(user1)==>"+str2);

System.out.println("\n****** JSON字符串 轉(zhuǎn) Java對象*******");

User jp_user1=JSON.parseObject(str2,User.class);

System.out.println("JSON.parseObject(str2,User.class)==>"+jp_user1);

System.out.println("\n****** Java對象 轉(zhuǎn) JSON對象 ******");

JSONObject jsonObject1 = (JSONObject) JSON.toJSON(user2);

System.out.println("(JSONObject) JSON.toJSON(user2)==>"+jsonObject1.getString("name"));

System.out.println("\n****** JSON對象 轉(zhuǎn) Java對象 ******");

User to_java_user = JSON.toJavaObject(jsonObject1, User.class);

System.out.println("JSON.toJavaObject(jsonObject1, User.class)==>"+to_java_user);

}

}

柚子快報激活碼778899分享:語法篇-JSON基礎(chǔ)

http://yzkb.51969.com/

精彩內(nèi)容

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18868648.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄