最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Flutter1.17使用JSON

2020-05-26 12:19 作者:嗨大成  | 我要投稿

JSON格式在代碼編程中,是最常用的格式。那么JSON定義是什么呢?

JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數(shù)據(jù)交換格式。它基于 ECMAScript (歐洲計算機協(xié)會制定的js規(guī)范)的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)。簡潔和清晰的層次結構使得 JSON 成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網(wǎng)絡傳輸效率。

簡要歷史

  • 1999年出現(xiàn),JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集。

  • 2001年 JSON是Douglas Crockford開始推廣使用的數(shù)據(jù)格式

  • 2005年-2006年正式成為主流的數(shù)據(jù)格式。

  • 現(xiàn)在廣泛應用

JSON 語法規(guī)則

JSON是一個標記符的序列。這套標記符包含六個構造字符、字符串、數(shù)字和三個字面名。

JSON是一個序列化的對象或數(shù)組。

6個構造字符

  • begin-array = ws %x5B ws ; [ 左方括號

  • begin-object = ws %x7B ws ; { 左大括號

  • end-array = ws %x5D ws ; ] 右方括號

  • end-object = ws %x7D ws ; } 右大括號

  • name-separator = ws %x3A ws ; : 冒號

  • value-separator = ws %x2C ws ; , 逗號

2. 在這6個構造字符的前或后允許存在無意義的空白符(ws):

  • ws = *(%x20 /; 空間

  • %x09 /; 水平標簽

  • %x0A /; 換行或換行

  • %x0D); 回程

3.JSON的值

3.1 JSON的構成: ws 值 ws [1]?

3.2值可以是對象、數(shù)組、數(shù)字、字符串或者三個字面值(false、null、true)中的一個。值中的字面值中的英文必須使用小寫。

3.3對象由花括號括起來的逗號分割的成員構成,成員是字符串鍵和上文所述的值由逗號分割的鍵值對組成,

?{

"name": "John Doe",?

"age": 18,?

"address": {

? ? ? ? ? ? "country" : "china",?

? ? ? ? ? ? "zip-code": "10000"

? ? ? ? ? ? }

}

3.4數(shù)組是由方括號括起來的一組值構成,如:

[3, 1, 4, 1, 5, 9, 2, 6]?

任何支持的類型都可以通過 JSON 來表示,例如字符串、數(shù)字、對象、數(shù)組等。但是對象和數(shù)組是比較特殊且常用的兩種類型。

對象:對象在 JS 中是使用花括號包裹 {} 起來的內(nèi)容,數(shù)據(jù)結構為 {key1:value1, key2:value2, ...} 的鍵值對結構。在面向?qū)ο蟮恼Z言中,key 為對象的屬性,value 為對應的值。鍵名可以使用整數(shù)和字符串來表示。值的類型可以是任意類型。

數(shù)組:數(shù)組在 JS 中是方括號 [] 包裹起來的內(nèi)容,數(shù)據(jù)結構為 ["java", "javascript", "vb", ...] 的索引結構。在 JS 中,數(shù)組是一種比較特殊的數(shù)據(jù)類型,它也可以像對象那樣使用鍵值對,但還是索引使用得多。同樣,值的類型可以是任意類型。

基礎示例

簡單地說,JSON 可以將 JavaScript 對象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后就可以在網(wǎng)絡或者程序之間輕松地傳遞這個字符串,并在需要的時候?qū)⑺€原為各編程語言所支持的數(shù)據(jù)格式,例如在 PHP 中,可以將 JSON 還原為數(shù)組或者一個基本對象。在用到AJAX時,如果需要用到數(shù)組傳值,這時就需要用JSON將數(shù)組轉(zhuǎn)化為字符串。?

表示對象

對象是一個無序的“‘名稱/值’對”集合。一個對象以{左括號開始,}右括號結束。每個“名稱”后跟一個:冒號;“‘名稱/值’ 對”之間使用,逗號分隔。

{"firstName": "Brett", "lastName": "McLaughlin"}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

表示數(shù)組和普通的 JS 數(shù)組一樣,JSON 表示數(shù)組的方式也是使用方括號 []。

{?

"persion":[?

{

"firstName": "Brett",? ? ? ? ? ??

"lastName":"McLaughlin"? ? ? ??

},? ? ??

{? ? ? ??

"firstName":"Jason",

"lastName":"Hunter"

}]}

這不難理解。在這個示例中,只有一個名為 persion的變量,值是包含兩個條目的數(shù)組,每個條目是一個人的記錄,其中包含名和姓。上面的示例演示如何用括號將記錄組合成一個值。當然,可以使用相同的語法表示更過多的值(每個值包含多個記錄)。

在處理 JSON 格式的數(shù)據(jù)時,沒有需要遵守的預定義的約束。所以,在同樣的數(shù)據(jù)結構中,可以改變表示數(shù)據(jù)的方式,也可以使用不同方式表示同一事物。

如前面所說,除了對象和數(shù)組,你也可以簡單地使用字符串或者數(shù)字等來存儲簡單的數(shù)據(jù),但這樣并沒有多大意義。

Flutter調(diào)用JSON例子

下載git地址:https://github.com/kenykeny1688888/jsonSample.git? ?

獲取依賴包:flutter pub get

Flutter 通過Json可序列化進行使用

代碼例子說明

定義json的格式,例子中定義下面紅色部分,通過?Map<String,?dynamic> toJson() => _$SerializableSimpleObjectToJson(this); OjectToJson進行轉(zhuǎn)換。
import 'package:json_annotation/json_annotation.dart';
part 'serializable_simple_object.g.dart';
@JsonSerializable()
class SerializableSimpleObject {
?SerializableSimpleObject({
? ?this.aString,
? ?this.anInt,
? ?this.aDouble,
? ?this.aListOfStrings,
? ?this.aListOfInts,
? ?this.aListOfDoubles,
?});

?final String aString;
?final int anInt;
?final double aDouble;
?final List<String> aListOfStrings;
?final List<int> aListOfInts;
?final List<double> aListOfDoubles;

?factory SerializableSimpleObject.fromJson(Map<String, dynamic> json) =>
? ? ?_$SerializableSimpleObjectFromJson(json);

?Map<String, dynamic> toJson() => _$SerializableSimpleObjectToJson(this);
}

運行:flutter run

Flutter運行的JSON例子簡單,這里不做動畫視頻直接貼圖


Flutter1.17使用JSON的評論 (共 條)

分享到微博請遵守國家法律
银川市| 富源县| 工布江达县| 台前县| 龙山县| 天峨县| 剑川县| 启东市| 育儿| 睢宁县| 苏尼特左旗| 临邑县| 芷江| 太原市| 齐河县| 那曲县| 奇台县| 铜山县| 吉安市| 双辽市| 兴隆县| 唐海县| 宜丰县| 河曲县| 陕西省| 蒲江县| 碌曲县| 科技| 泸州市| 长宁区| 济阳县| 绵竹市| 滨州市| 武山县| 玛沁县| 农安县| 白玉县| 泾川县| 宿州市| 眉山市| 霍山县|