JSON字符串與JSON對象的區別


JSON字符串與JSON對象的區別


Q:什么是"JSON字符串",什么是"JSON對象",兩者的區別?

a.JSON對象是直接可以使用JQuery操作的格式,如js中可以用對象(類名)點出屬性(方法)一樣
b.JSON字符串僅僅只是一個字符串,一個整體,不截取的話沒辦法取出其中存儲的數據,不能直接使用,除非你只想alert();

JSON對象

var obj = { "name": "xiaoling", "age": "18" };

JSON字符串

var obj = “{ "name": "xiaoling", "age": "18" }”;

Q:如何將JSON字符串轉為JSON對象?


 

方法一:$.parseJSON()

var str='{"name":"xiaoling","age":"18"}';
var obj=jQuery.parseJSON(str);
console.log(obj.name);   //xiaoling

方法二:JSON.parse()

var str='{"name":"xiaoling","age":"18"}';
var obj=JSON.parse(str);
console.log(obj.name);

方法三:eval()

var str='{"name":"xiaoling","age":"18"}';
var obj=eval('('+str+')');
console.log(obj.name);
為什么要 eval這里要添加 “("("+data+")");/呢?

原因在於:eval本身的問題。 由於json是以”{}”的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,所以必須強制性的將它轉換成一種表達式。

加上圓括號的目的是迫使eval函數在處理JavaScript代碼的時候強制將括號內的表達式(expression)轉化為對象,而不是作為語句(statement)來執行。舉一個例子,例如對象字面量{},如若不加外層的括號,那么eval會將大括號識別為JavaScript代碼塊的開始和結束標記,那么{}將會被認為是執行了一句空語句。所以下面兩個執行結果是不同的:

Q:如何將對象轉為JSON格式的對象?


 

方法一:JSON.stringify(obj)

 var obj={name:"xioamei", age:18}
console.log("obj="+JSON.stringify(obj)); 

方法二利用nodeJS中的util模塊中的 util.inspect(obj[,options])

該方法中的options有以下幾個參數:

colors:默認為false,設為true,將會以ANSI顏色的代碼風格輸出。

showHidden:默認為false,設為true,則對象的不可枚舉的屬性將會被顯示出來。

depth:默認為2,告訴inspect格式化對象的時候遞歸多少次。復雜對象的時候很有用。

customInspect:默認為true,設為false,則定義在被檢查對象上的inspect(depth,opts)方法將不會被調用。

npm install util

新建一個js文件 如此結構:

util的代碼:

var util=require('util');
var obj={
     name:'xiaomei',
     age:18,
     family:{
        sister:{
            name:'niu',
            age:17
        },
        brothers:{
            name:"lis",
            age:15,
            b_family:{
                  wife:"xiaoling",
                children:"2"
            }
        }
    }
}
console.log("obj="+util.inspect(obj,{color:true,depth:4}));

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM