json字幕改為srt字幕「str轉json轉時間」

1. JSON 是什麼?

  • JSON,全稱是 JavaScript Object Notation,即 JavaScript對象標記法。
  • JSON是一種輕量級(Light-Meight)、基於文本的(Text-Based)、可讀的(Human-Readable)格式。
  • JSON 的名稱中雖然帶有JavaScript,但這是指其語法規則是參考JavaScript對象的,而不是指只能用於JavaScript 語言。
  • JSON無論對於人,還是對於機器來說,都是十分便於閱讀和書寫的,而且相比 XML(另一種常見的數據交換格式),文件更小,因此迅速成為網路上十分流行的交換格式。
  • 近年來JavaScript已經成為瀏覽器上事實上的標準語言,JavaScript 的風靡,與JSON 的流行也有密切的關係。
  • 因為JSON本身就是參考JavaScript 對象的規則定義的,其語法與JavaScript定義對象的語法幾乎完全相同。
  • JSON格式的創始人聲稱此格式永遠不升級,這就表示這種格式具有長時間的穩定性,10 年前寫的文件,10年後也能用,沒有任何兼容性問題。

2. JSON 的語法規則是怎樣的?

JSON 的語法規則十分簡單,可稱得上「優雅完美」,總結起來有:

  • 數組(Array)用方括弧(「[]」)表示。
  • 對象(0bject)用大括弧(「{}」)表示。
  • 名稱/值對(name/value)組合成數組和對象。
  • 名稱(name)置於雙引號中,值(value)有字元串、數值、布爾值、null、對象和數組
  • 並列的數據之間用逗號(「,」)分隔
{
	"name": "xdr630",
	"favorite": "programming"
}

3. JSON 和 XML

JSON常被拿來與XML做比較,因為JSON 的誕生本來就多多少少要有取代XNL的意思。相比 XML,JSON的優勢如下:

  • 沒有結束標籤,長度更短,讀寫更快
  • 能夠直接被JavaScript解釋器解析
  • 可以使用數組

兩者比較

  • JSON:
{
	"name":"兮動人",
	"age":22,
	"fruits":["apple","pear","grape"]
}
  • XML:
<root>
	<name>兮動人</name>
	<age>22</age>
	<fruits>apple</fruits>
	<fruits>pear</fruits>
	<fruits>grape</fruits>
</root>

4. JSON的解析和生成(JSON 和 JS 對象互轉)

  • 在JavaScript中,有兩個方法與此相關: JSON.parse和 JSON.stringify 。

JSON 和 JS 對象互轉

  1. 要實現從JSON字元串轉換為JS對象,使用 JSON.parse() 方法:
<script>
	var str = '{"name": "兮動人","age":22}';
	var obj = JSON.parse(str);
	console.log(obj);
</script>
JSON使用攻略技巧
  1. 要實現從JS對象轉換為JSON字元串,使用 JSON.stringify() 方法:
<script>
	var str = '{"name": "兮動人","age":22}';
	var obj = JSON.parse(str);
	console.log(obj);
        
	var jsonstr = JSON.stringify(obj);
	console.log(jsonstr);
</script>
JSON使用攻略技巧

5. JSON格式規定

JSON使用攻略技巧

1、對象(0bject)

  • 對象用大括弧(「{}」)括起來,大括弧里是一系列的「名稱/值對」,請看概念圖。
  • 兩個並列的數據之間用逗號(「,」)隔開,注意兩點:
  1. 使用英文的逗號(「,」),不要用中文的逗號(「,」)
  2. 最後一個「名稱/值對「之後不要加逗號
  • JSON在線檢查語法:https://www.json.cn/
  • 這裡報錯說明JSON中Key/Value不能使用單引號
  • 正確寫法 2、數組(Array)
  • 數組表示一系列有序的值,用方括弧(「[]」)包圍起來,並列的值之間用逗號分隔,請看概念圖。
  • 例如,以下的數組是合法的:
[1,2,"three","four",true,false,null,[1,2],{"name":"兮動人"}]
JSON使用攻略技巧

3、名稱/值對(Name/Value)

  • 名稱(Name)是一個字元串,要用雙引號括起來,不能用單引號也不能沒有引號,這一點與JavaScript不同。
  • 值的類型只有七種:字元串(string)、數值(number)、對象(object)、數組(array), true、false、null。不能有這之外的類型,例如undefined、函數等。請看概念圖。

字元串(string)的規則如下:

  1. 英文雙引號括起來,不能用單引號,也不能沒有。
  2. 字元串中不能單獨出現雙引號(」)和右斜杠(「”)。
  3. 如果要打雙引號或右斜杠,需要使用「右斜杠+字元」的形式,例如」和\,其它的轉義字元也是如此字元串的概念圖。
  • 轉義字元
{
"string":"\ " "
}
JSON使用攻略技巧
  • 數值類型,可以使用科學計數法表示
{
"number":1e3,
"n1":1e2,
"n2":-100
}
JSON使用攻略技巧

6. 字元串轉化成對象

JSON使用攻略技巧
  • 解析:是指將符合JSON 語法規則的字元串轉換成對象的過程。
  • 不同的編程語言都提供了解析JSON字元串的方法,在這裡主要講解JavaScript中的解析方法。主要有三種:
  1. 使用eval()
  2. 使用JSON.parse()
  3. 使用第三方庫,例如JQuery等

1、 eval()

  • eval()函數的參數是一個字元串,其作用是直接執行其中的 JavaScript代碼。
  • 案例:eval()解析字元串
<script>
	var str = "console.log('hello')";
	eval(str);
</script>
  • eval 解析字元串的結果:
JSON使用攻略技巧
  • eval()能夠解析JSON字元串。從這裡也可以看得出,JSON 和JavaScript是高度嵌合的。
  • 案例:eval()解析JSON字元串
<script>
	var str = '{"name":"兮動人","age":22}';
	var obj = eval("("+str+")");
	console.log(obj)
</script>
JSON使用攻略技巧
  • 但是,現在已經很少直接使用eval()來解析了,如果您的瀏覽器版本真的是很舊,可能才需要這個方法。此外,eval()是一個相對危險的函數,因為字元串中可能含有未知因素。在這裡,作為學習,還是要知道這也是一種方法。
  • 請注意 eval()的參數,在字元串兩旁加了括弧,這是必須的,否則會報錯。
  • 因為JSON字元串是被大括弧(「{}」)包圍的,直接放到 eval()會被當成語句塊來執行,因此要在兩旁加上括弧,使其變成表達式。

2、JSON. parse()

  • 現在絕大多數瀏覽器都以支持JSON.parse(),是推薦使用的方式
  • 如果輸入了不符合規範的字元串,會報錯。

案例:JSON字元串轉換為JS對象

<script>
	var str = '{"name":"兮動人","age":22}';
	var obj = JSON.parse(str)
	console.log(obj)
</script>
JSON使用攻略技巧
  • JSON.parse()可以有第二個參數,是一個函數。此函數有兩個參數:name和value,分別代表名稱和值。當傳入一個JSON字元串後,JSON的每一組名稱/值對都要調用此函數。該函數有返回值,返回值將賦值給當前的名稱(name)。
  • 利用第二個參數,可以在解析JSON字元串的同時對數據進行一些處理。

案例:

<script>
	var str = '{"name":"兮動人","age":22}';
	var obj = JSON.parse(str,fun);
	function fun(name,value){
		console.log(name+":"+value);
		return value
	}
	console.log(obj)
</script>
JSON使用攻略技巧
  • 可以做判斷處理,當JSON字元串的 name=age 時,設置age的value=14
<script>
	var str = '{"name":"兮動人","age":22}';
	var obj = JSON.parse(str,fun);
	function fun(name,value){
	if (name == "age")
		value = 14;
		return value
	}
 	console.log(obj)
</script>
JSON使用攻略技巧

7. JS對象轉化為字元串

JSON使用攻略技巧
  • 序列化,指將 JavaScript 值轉化為JSON字元串的過程。
  • JSON.stringify()能夠將JavaScript值轉換成JSON字元串。JSON.stringify()生成的字元串可以用JSON.parse()再還原成JavaScript值。

1、參數的含義

JSON.stringify(value[, replacer[, space]])
  1. value:必選參數。被變換的JavaScript值,一般是對象或數組。
  2. replace:可以省略。有兩種選擇:函數或數組。
  • 如果是函數,則每一組名稱/值對都會調用此函數,該函數返回一個值,作為名稱的值變換到結果字元串中,如果返回undefined,則該成員被忽略。

案例:

<script>
        var obj = {
            name: "兮動人",
            age: 22
        };
        console.log(obj);

        var jsonstr = JSON.stringify(obj,fun);

        function fun(name,value) {
            if (name=="age")
                value = 18;
                return value;
         }

        console.log(jsonstr)

</script>
JSON使用攻略技巧
  • 如果是數組,則只有數組中存在名稱才能夠被轉換,且轉換後順序與數組中的值保持一致。
  • 案例:
<script>
        var obj = {
            a: 1,
            b: 2,
            c: 3,
            d: 4
        };
        console.log(obj);

        var jsonstr = JSON.stringify(obj,["a","b","c"]);
        
        console.log(jsonstr)
</script>
JSON使用攻略技巧
  • 把順序改下,對應轉換的JSON字元串的數值不變
var jsonstr = JSON.stringify(obj,["c","a","b"]);
JSON使用攻略技巧
  1. space:可以省略。這是為了排版、方便閱讀而存在的。可以在JSON字元串中添加空白或製表符等。

2、value的用法

<script>
var obj = {
            name: "兮動人",
            age: 22
        }
	console.log(obj);
	var jsonstr = JSON.stringify(obj);
	console.log(jsonstr)
</script>
JSON使用攻略技巧
  • 當有不符合JSON語法規則時,就不會被轉換成JSON字元串。
  • 數組中有函數時會被轉換成 null
<script>
	var obj = {
            name: "兮動人",
            age: 22,
            a: undefined,
            f: function () {

            },
            b:[function () {}]
        }
	console.log(obj);
	var jsonstr = JSON.stringify(obj);
	console.log(jsonstr)        
</script>
JSON使用攻略技巧

3、replace的用法

4、space的用法

  • 案例:在上面的基礎上添加
<script>
        var obj = {
            a: 1,
            b: 2,
            c: 3,
            d: 4
        };
        console.log(obj);

        var jsonstr = JSON.stringify(obj,["c","a","b"],"one");

        console.log(jsonstr)
</script>
JSON使用攻略技巧
  • 改成製表符:t
<script>
        var obj = {
            a: 1,
            b: 2,
            c: 3,
            d: 4
        };
        console.log(obj);

        var jsonstr = JSON.stringify(obj,["c","a","b"],"t");

        console.log(jsonstr)
</script>
JSON使用攻略技巧

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/274603.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-17 14:14
下一篇 2024-12-17 14:14

相關推薦

發表回復

登錄後才能評論