首頁 > web前端 > js教程 > JavaScript學習理解之JSON(總結分享)

JavaScript學習理解之JSON(總結分享)

WBOY
發布: 2022-03-23 14:01:00
轉載
1857 人瀏覽過

本篇文章為大家帶來了關於javascript的相關知識,其中主要介紹了關於JSON的相關問題,包括了JSON對象、JSON數組和JSON字符串等等,希望對大家有幫助。

JavaScript學習理解之JSON(總結分享)

相關推薦:javascript教學

#1、JSON物件

任務描述

本關任務:練習在JavaScript中定義JSON物件。

具體要求如下:

  • 定義一個JSON物件JSONObject,它有三個屬性:key1、key2和key3,它們的值分別是參數a、 b和c;

  • 刪除其中名字為key3的屬性;

  • 刪除完成後,遍歷其餘的所有屬性,傳回各屬性的值連接成的字串,中間用,隔開

JSON既然是用來傳遞數據的,必然要先存儲數據,存儲數據需要採用一定的數據格式,JSON常用的資料格式有JSON物件、JSON陣列和JSON字串。

什麼是JSON物件

JSON物件(通常叫JSON)是一種文字資料的交換格式,用於儲存和傳輸資料。範例如下:

{"name":"Jerry", "age":15}
登入後複製

這就是一個簡單的json對象,它的規則是:

  • 資料以鍵/值對的形式存在;
  • 資料之間用逗號間隔;
  • 大括號表示保存物件;
  • 方括號表示保存陣列。

JSON物件與Javascript物件的區別

JSON是基於JavaScript語法的,所以JSON中也有物件的概念,但是和JavaScript中的物件有一些小的差別。

  1. 定義一個JavaScript物件:
var myObject = {
    id:1,
    name:"Peter Bruce",
    "first name":"Bruce",
    display:function() {
                console.log(this.name);
            }}
登入後複製
  1. 定義一個JSON物件:
{"id":1,"name":"Peter Bruce","first name":"Bruce"}
登入後複製
  1. 三點區別:

#(1)JSON物件的屬性名稱(key)必須被包含在雙引號之中,而JavaScript物件除了有空格的屬性名稱、中間有連字符-的屬性名必須在雙引號之中外,其它隨意;
(2)不能在JSON物件中定義方法,而在JavaScript物件中可以;
(3)JSON物件可以被很多語言操作,而JavaScript物件只有JS自己可以辨識


  1. 定義JSON物件的方法如下

#用一個{}包含在內,內部是若干個屬性名稱和屬性值構成的鍵值對,鍵值對之間用,隔開,屬性名和屬性值之間用:隔開,屬性值可以是以下任一種資料型態的數據:數字、字串、JSON陣列、JSON物件、null。如:

 {"a":1,"b":2.12,"c":true,"d":"string","e":null};
登入後複製

屬性值是JSON陣列或JSON物件的情況稍複雜,後面的關卡將介紹。

在JavaScript中使用JSON物件

支援JSON的語言都能夠使用JSON對象,這裡僅介紹在JavaScript中如何使用JSON物件。

  • 在JavaScript中定義一個JSON物件:
var jsonObject = {"name":"js","number":2};
登入後複製
  • 操作屬性,使用.[]
console.log(jsonObject.name);
//读属性,输出jsconsole.log(jsonObject["name"]);
//读属性,输出jsjsonObject.name = "javascript";
//写属性,给name属性赋值javascript
登入後複製
  • 刪除屬性,使用delete:
var jsonObject = {"name":"js","number":2};
delete jsonObject.name;
//删除name属性
登入後複製
  • 遍歷屬性,使用for-in循環:
var jsonObject = {"name":"js","number":2};for(att in jsonObject) {
  console.log(jsonObject[att]);
  //依次输出js、2}
登入後複製

程式碼檔案

function mainJs(a,b,c) {
	//请在此处编写代码
	/********** Begin **********/
    var JSONObject = {"key1":a,"key2":b,"key3":c};
    delete JSONObject.key3;
    return a+","+b;
	/********** End **********/}
登入後複製

2、JSON數組

任務描述

本關任務:定義並操作JSON鍵值對中的值。

具體要求如下:

  • 已知myJson的第三個屬性的值是一個數組,參數a是一個數字,要求將數組中前a個元素(這些元素都是字串型別)拼接起來,元素之間用,隔開,傳回拼接後的字串;
  • 例如a為2的時候,你需要回傳js,java。

JSON屬性對應的值(value)是一個數組

  • JSON鍵值對中的值(value)可以是一個陣列

#例如:

{"country":"China","population":"1.3billion","bigCity":["Peking","Shanghai","ShenZhen","HongKong"]}
登入後複製

屬性bigCity的值有多個,放在一個陣列裡面。

上面例子裡面,陣列的每一個元素都是字串。其實,陣列的每一個元素還可以是另一個json物件。例如:

{"class":"高三一班","studentNumber":70,"score":[
    {"name":"LiMing","score":128},
    {"name":"ZhangHua","score":134},
    {"name":"ShenLu","score":112}]}
登入後複製

上面的score屬性的值就是一個數組,這個數組的每一個元素都是一個json物件。

數組的一些操作

  1. 讀寫元素:
#
var myJson = {"country":"China","population":"1.3billion","bigCity":["Peking","Shanghai","ShenZhen","HongKong"]}console.log(myJson.bigCity[1]);
//打印出ShanghaimyJson.bigCity[0] = "GuangZhou";
//第一个元素被赋值为GuangZhou
登入後複製
  1. 遍歷:
var myJson = {"country":"China","population":"1.3billion","bigCity":["Peking","Shanghai","ShenZhen","HongKong"]}for(var i = 0;i < myJson.bigCity.length;i++) {
    console.log(myJson.bigCity[i]);//依次输出Peking,Shanghai,ShenZhen,HongKong}
登入後複製

程式碼檔案

【第一種方法是後來寫的,剛開始用的是下面的第二種辦法,因為當時做不出來,就想著直接輸出】

var myJson = {
    "category":"computer",
    "detail":"programming",
    "language":[
    "js","java","php","python","c"
    ]}function mainJs(a) {
    a = parseInt(a);
	//请在此处编写代码
	/********** Begin **********/
    var b = "";
    for(var i=0;i<a;i++){
        b = b+myJson.language[i]+",";
    }
    return b.slice(0,-1);
	/********** End **********/}
登入後複製
var myJson = {
    "category":"computer",
    "detail":"programming",
    "language":[
    "js","java","php","python","c"
    ]}function mainJs(a) {
    a = parseInt(a);
	//请在此处编写代码
	/********** Begin **********/
    if(a==1){
        return myJson.language[0];
    }
    if(a==2){
        return myJson.language[0]+","+myJson.language[1];
    }
    if(a==3){
        return myJson.language[0]+","+myJson.language[1]+","+myJson.language[2];
    }
    if(a==4){
        return myJson.language[0]+","+myJson.language[1]+","+myJson.language[2]+","+myJson.language[3];
    }
    if(a==5){
        return myJson.language[0]+","+myJson.language[1]+","+myJson.language[2]+","+myJson.language[3]+","+myJson.language[4];
    }
	/********** End **********/}
登入後複製

3、JSON字串

任務描述

#本關任務:練習JSON字串和JavaScript物件的相互轉換。

具體要求如下:

  1. 先将JSON字符串JSONString转换为JavaScript对象JSONObject;
  2. 然后将JSONObject的key1属性的值设置为mainJs()函数的参数a;
  3. 最后将JSONObject转换为JSON字符串,并返回该字符串

在前端和后台之间传递数据可以使用JSON,但是实际上传递的是JSON字符串,而JSON对象是不可以直接进行传递的。

JSON字符串

JSON字符串就是在JSON对象两边套上'形成的字符串,如:

var JSONObject  = {"k1":"v1","k2":"v2"};
//JSON对象var JSONString1 = '{"k1":"v1","k2":"v2"}';
//JSON字符串
登入後複製

上面的JSONSring1就是JSON字符串,可以直接从前端传到后台或者后台传到前端。

当JavaScript收到从后台传来的JSON字符串后,怎么把它变成JSON对象方便处理呢?

JSON字符串到JavaScript对象

JSON.parse(a,b)方法将JSON字符串a转换为JavaScript对象。b是一个可选的函数参数。

var JSONString1 = '{"k1":"v1","k2":"v2"}';console.log(JSON.parse(JSONString1));
//输出Object {k1: "v1", k2: "v2"}
登入後複製

函数参数b按从里到外的顺序作用在对象的所有属性上,最后一个作用的是对象本身:

//对象的每一个属性的值加1var text = '{ "key1":1, "key2":2, "key3":2.2}';var obj = JSON.parse(text, function (key, value) {
    if(key === '')//当遇到对象本身时,不进行加1操作
        return value;
    return value+1;//对属性值加1});console.log(obj);
    //输出Object {key1: 2, key2: 3, key3: 3.2}
登入後複製

如上面所示,函数的参数有两个,其中key表示属性的名字,value表示属性的值,当遇到对象本身时,key的值为'',即空字符串。

JSON对象转换为JSON字符串

JSON.stringify(a,b,c)a是待转换的JSON对象,b和c为可选参数。

var JSONObject = {"k1":"v1","k2":"v2"};
JSON.stringify(JSONObject);
//JSON对象转换为JSON字符串
登入後複製

参数b为函数时,该函数按照从里到外的顺序处理JSON对象的每一个属性,最后一个处理的是JSON对象本身,处理完后再转为JSON字符串:

//对象的所有属性值加1,再转为字符串var JSONObject = {"k1":1,"k2":2.2};var JSONString = JSON.stringify(JSONObject,function(k,v){
    if(k === '')//处理到了JSON对象本身
        return v;
    return v+1;//所有的属性的值加1});console.log(JSONString);
    //输出{"k1":2,"k2":3.2}
登入後複製

参数b还可以是数组,数组存储的是属性的名字,用来指定只转换哪些属性:

//转换对象中特定的属性
var JSONObject = {"k1":1,"k2":2.2,"k3":3};var JSONString = JSON.stringify(JSONObject,["k1","k2"]);console.log(JSONString);
//输出{"k1":1,"k2":2.2}
登入後複製

这里简单介绍一下c:

var str = ["name":"Tom","age":16];var obj1 = JSON.stringify(str);
var obj2 = JSON.stringify(str,null,4);console.log(obj1);  
//输出{"name":"Tom","age":16}console.log(obj2); 
//输出
//{
//    "name": "Tom",
//    "age": 16
//}
登入後複製

参数c:文本添加缩进、空格和换行符,如果 c 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 c 大于 10,则文本缩进 10 个空格。

代码文件

var JSONString = '{"key1":"value1","key2":"value2"}';function mainJs(a) {
	//请在此处编写代码
	/********** Begin **********/
    var JSONObject = JSON.parse(JSONString);
    JSONObject["key1"] = a;
    JSONObject.key1 = a;
    return JSON.stringify(JSONObject);
	/********** End **********/}
登入後複製

相关推荐:javascript学习教程

以上是JavaScript學習理解之JSON(總結分享)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板