js對象與json字符串的互轉

今天在面試的時候,面試官問到js對象與json字符串的互轉問題,由於自己平時在用的時候沒有在意,而且在工作中由於用的較少,沒有答上來,所以今天特地查查資料複習一下, 鞏固一下這方面的知識。

1、js對象轉換成json字符串

在與後端進行交互時,有時需要把js對象轉換成json字符串格式,這時我們需要去引用一下json2.js這個文件,然後調用JSON.stringify()方法。例如:
var data = new Object(); var jsonData = JSON.stringify(data);

2、json字符串轉換成js對象

在工作中在ajax獲取後端數據時,獲取到的是json格式,有時就需要我們轉換成js對象格式。在這裏我們使用jQuery的一個$.parseJSON()方法將JSON格式的數據轉換成js對象格式。例如:

var jsonData = $.getJSON(); var data = $.parseJSON(jsonData);

當然,還可以使用JSON.parse()方法,方法同上,但是有的瀏覽器對JSON.parse()的支持不是很理想,所以在使用時儘量使用.parseJSON() .parseJSON()方法在瀏覽器支持時會返回執行JSON.parse()方法的結果,否則會返回類似執行eval()方法的結果,具體參考jQuery1.9.1得出:

parseJSON: function( data ) { 
  // Attempt to parse using the native JSON parser first 
  if ( window.JSON && window.JSON.parse ) { 
    return window.JSON.parse( data ); 
  } 


  if ( data === null ) { 
    return data; 
  } 


  if ( typeof data === "string" ) { 


    // Make sure leading/trailing whitespace is removed (IE can't handle it) 
    data = jQuery.trim( data ); 


    if ( data ) { 
      // Make sure the incoming data is actual JSON 
      // Logic borrowed from http://json.org/json2.js 
      if ( rvalidchars.test( data.replace( rvalidescape, "@" ) 
        .replace( rvalidtokens, "]" ) 
        .replace( rvalidbraces, "")) ) { 


        return ( new Function( "return " + data ) )(); 
      } 
    } 
  } 


  jQuery.error( "Invalid JSON: " + data ); 
},

這樣就完成了js對象與JSON字符串的互轉了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章