JS筆記(14): JSON格式處理器

1、關於JSON

  • JSON格式相關規定:javascript

    • 1.複合類型的值只能是數組或對象,不能是函數、正則表達式對象、日期對象。
    • 2.原始類型的值只有四種:字符串、數值(必須以十進制表示)、布爾值和null(不能使用NaN, Infinity, -Infinity和undefined)。
    • 3.字符串必須使用雙引號表示,不能使用單引號。
    • 4.對象的鍵名必須放在雙引號裏面。
    • 5.數組或對象最後一個成員的後面,不能加逗號
  • JSON格式處理器:java

    • 用來處理普通值和JSON文本之間的轉換
  • JSON字符串:正則表達式

    • 用JSON格式寫的文本
  • JSON處理器有兩個靜態方法:數組

    • 1.JSON.parse()
    • 2.JSON.stringify()

2、JSON.stringify()

JSON.stringify()瀏覽器

  • 將其餘類型的值轉換爲JSON字符串函數

  • JSON的第二個參數(不經常使用到,這部分可忽略):ui

    • 1.用來指定能夠轉換成JSON字符串的屬性(只對普通對象有效)
    • 2.也能夠是一個函數,轉換的JSON字符串會變味函數的返回值;此處,函數能夠有兩個參數(key,value),分別爲對象鍵值對的屬性名和屬性值,若是屬性值是數字,能夠作數學處理,返回處理後的字符串
  • JSON還有第三個參數,也不經常使用到,感興趣的朋友可參考其餘文檔spa

console.log(JSON.stringify(123)); //'123'
console.log(JSON.stringify('123')); //'"123"'
console.log(JSON.stringify(true)); // 'true'
console.log(JSON.stringify('true')); //'"true"'
console.log(JSON.stringify(null)); //'null'
console.log(JSON.stringify({ name: 'Tom' })); //'{"name":"Tom"}'
console.log(JSON.stringify({ undefined, name: 'Tom' })); //'{"name":"Tom"}' 對象中的undefined被瀏覽器過濾掉
console.log(JSON.stringify([1, { name: 'Tom' }])); //'[1,{"name":"Tom"}]'
console.log(JSON.stringify([undefined, { name: 'Tom' }])); //'[null,{"name":"Tom"}]' 數組中的undefined轉爲null
console.log(JSON.stringify(/^\d$/)); //{} 正則會轉爲空對象
複製代碼
//JSON的第二個參數:指定能夠轉換成JSON字符串的屬性
let obj = {
    name: 'Tom',
    age: 18,
    id: 123
}
console.log(JSON.stringify(obj, ['name', 'id'])); //'{"name":"Tom","id":123}'
複製代碼
//JSON.stringify方法的第二個參數是函數的狀況
function fn() {
    return 123
};
console.log(JSON.stringify({ a: 1 }, fn)); //'123'

function fn1(key, value) {
    typeof value === 'number' ? value++ : null; //爲何這非得先判斷一下呢,直接寫下面的value++就不能夠 ,我也不明白爲何
    // value++
    return value
};
console.log(JSON.stringify({ a: 1, b: 2 }, fn1)); //{"a":2,"b":4} 

function fn3(key, value) {
    typeof value === 'string' ? value = 'Jerry' : null;
    // value = 'Jerry'
    return value
};
console.log(JSON.stringify({ name: 'Tom' }, fn3)); //{"name":"Jerry"}
複製代碼

3、JSON.parse()

  • JSON.parse() 將 JSON 字符串轉換成其餘值
  • JSON.parse()的第二個參數(不經常使用到,可忽略): 能夠是個函數,函數返回值會改變對象的屬性值
console.log(JSON.parse('123')); //123
console.log(JSON.parse('"123"')); //"123"
console.log(JSON.parse('true')); //true
console.log(JSON.parse('null')); //null
console.log(JSON.parse('{"name":"Tom"}')); //{name: "Tom"}
複製代碼
//JSON.parse()的第二個參數是函數的狀況
function f(key, value) {
    if (key === 'a') {
        return value + 10;
    }
    return value;
}
console.log(JSON.parse('{"a": 1, "b": 2}', f)); // {a: 11, b: 2}
複製代碼
相關文章
相關標籤/搜索