<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • json轉js對象的方法(0基礎小白深入掌握Json)


    前言:

    上節說道:只見那周瑜拿著大刀,騎著大馬,飛奔而來。然后子龍一個回馬槍打的那周瑜是落荒而逃~~咳咳……

    不好意思,跑題了,回到正題。

    上節講解了js中處理json的一個很重要的方法:

    JSON.stringify() ,沒有讀的小伙伴先去看一下文章:

    你真會用js中的JSON(二)?

    這節繼續來講另一個同樣重要的方法,怎么樣把一個json字符串轉成json中的對象,有轉就有解嘛~~

    JSON.parse()

    該方法的作用是把json字符串轉成javascript中對象:

    var json = '{"name": "張三", "age": 10, "address": "北京"}'
    var obj = JSON.parse(json)
    console.log(obj.name) // '張三'
    console.log(obj.age) // 10
    console.log(obj.address) // '北京'
    // 用法還是挺簡單的。但是如果我不小心手殘了,
    // 把json字符串寫錯了,比如:鍵忘記寫雙引號了,看看會有什么效果
    
    var errorJson = '{name: "張三", "age": 10, "address": "北京"}'
    var obj1 = JSON.parse(errorJson)
    // Uncaught SyntaxError: Unexpected token n in JSON at position 1
    
    // 是的,報錯啦~~~
    // 這說明,如果我們傳入的json字符串是一個錯誤的格式,那么該方法會報錯

    通常,我們會用try…catch語句來捕獲一下這個錯誤,

    var errorJson = '{name: "張三", "age": 10, "address": "北京"}'
    try{
      JSON.parse(errorJson)
    }catch(e){
      // 捕獲錯誤,對錯誤對行處理
      console.log(e)
    }

    parse()方法還可以接收另一個可選參數,該參數和stringify()方法的第二個參數差不多,類型為函數類型的。

    var json = '{"name": "張三", "age": 10, "address": "北京"}'
    var handleFunction = function (key, value) {
      if (key === 'age') {
        return value + 10
      }
      return value
    }
    var obj = JSON.parse(json, handleFunction)
    console.log(obj) // name: "張三", age: 20, address: "北京"}
    // 上面代碼我們判斷如果鍵是`age`的話,就讓值加10,最終得到結果是:20
    // 和 stringify()函數用法基本一樣。

    對象中的toJSON

    先說用法:如果某個對象中定義了toJSON方法,那么在把個對象轉成json字符串的時候,就會調用這個方法,而忽略對象的其它屬性。

    // 先來看一個沒有toJSON方法的對象
    var person = {
      name: '張三',
      age: 10,
      address: '北京'
    }
    var json = JSON.stringify(person)
    console.log(json) // {"name":"張三","age":10,"address":"北京"}
    // 再看一下如果給這個對象加上toJSON方法
    var person = {
      name: '張三',
      age: 10,
      address: '北京',
      toJSON: function(){
        return '我是toJSON方法的返回值'
      }
    }
    var json = JSON.stringify(person)
    console.log(json) // "我是toJSON方法的返回值"
    // 可以發現,如果定義了toJSON方法,stringify()就會調用對象的toJSON方法,
    // 并且把返回值做為要轉成json的對象
    
    
    // 再來看一個例子
    var person = {
      name: '張三',
      age: 10,
      address: '北京',
      toJSON: function(){
        return {
          name: '李四',
          age: 20,
          address: '上海'
        }
      }
    }
    var json = JSON.stringify(person)
    console.log(json) //{"name":"李四","age":20,"address":"上海"}
    // 可以發現,要轉json的對象已經和原來不一樣了。

    好了,js中的JSON知識點就介紹這么多。

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费