JavaScript中字串轉Json方法小記
阿新 • • 發佈:2018-12-22
之前一朋友在說起js中關於json字串轉json物件的問題,之後想寫個文章簡單記錄一下的後來就給忘了,現在記得趕緊記錄一下^_^
幾種字串轉json的方法:
1、在js中把json字串轉json物件的方法不止一種,最常見的一種方式如下,使用到eval方法:
javascript程式碼?
上面這種方法有一點要注意的是要在json字串的兩邊加上括號,然後再用eval函式就行轉換!
2、另外一種是使用Function來進行轉換,大致如下:
javascript程式碼?
可以看到其原理就是拼接js程式碼字串,然後使用Function建立一個匿名方法然後呼叫之!
3、還有一種是使用JSON全域性物件,不過比較可惜的是IE8以下的版本木有這個物件(囧TZ~),如果不考慮相容IE8一下版本的話JSON全域性物件是個很有用的東西,使用的程式碼如下:
javascript程式碼?
JSON物件提供了兩個很有用的方法,JSON.parse()方法接受一個字串作為引數,返回一個json物件;JSON.stringify()方法則相反!
PS:有一個比較常用的組建,叫做json2,這個元件也提供了一個全域性物件,也是叫JSON,同樣也有parse和stringify兩個方法,使用這個組建可以很好的解決IE8以下版本使用不了JSON全域性變數的方法,需要這個組建的話請前往這裡https://github.com/douglascrockford/JSON-js,在原始碼專用意見有使用說明了!
4、如果使用JQuery的話還有一個方法,就是jQuery.parseJSON()方法,和上面幾個的效果一樣,都是接受字串返回json物件,程式碼如下:
javascript程式碼 ?
需要注意的是,這個方法是1.4版本才有的!
請注意Json格式:
對於json很多人經常會這樣來定義:var jsonObj = {name:"serafin", age:26}; 在這裡需要注意的是,這樣定義在上面幾種方法中,只有前面兩種方法可以正常使用,後面兩種方法會出現報錯!其實最標準的定義應該是這樣的:var jsonObj = {"name":"serafin", "age":26}; 也就是說每個key都要用雙引號括住!這樣的格式在上面幾種方法都可以正常使用!
幾種字串轉json的方法:
1、在js中把json字串轉json物件的方法不止一種,最常見的一種方式如下,使用到eval方法:
javascript程式碼?
12 | var jsonStr = '{"userName": "tiu","userAge": 26,"isMale": true}' ; var json = eval( "(" + jsonStr + ")" ); |
2、另外一種是使用Function來進行轉換,大致如下:
javascript程式碼?
12 | var jsonStr = '{"userName": "tiu","userAge": 26,"isMale": true}' ; var json = ( new Function( "return " + jsonStr))(); |
3、還有一種是使用JSON全域性物件,不過比較可惜的是IE8以下的版本木有這個物件(囧TZ~),如果不考慮相容IE8一下版本的話JSON全域性物件是個很有用的東西,使用的程式碼如下:
javascript程式碼?
123 | var jsonStr = '{"userName": "tiu","userAge": 26,"isMale": true}' ; var json = JSON.parse(jsonStr); var str = JSON.stringify(json); |
PS:有一個比較常用的組建,叫做json2,這個元件也提供了一個全域性物件,也是叫JSON,同樣也有parse和stringify兩個方法,使用這個組建可以很好的解決IE8以下版本使用不了JSON全域性變數的方法,需要這個組建的話請前往這裡https://github.com/douglascrockford/JSON-js,在原始碼專用意見有使用說明了!
4、如果使用JQuery的話還有一個方法,就是jQuery.parseJSON()方法,和上面幾個的效果一樣,都是接受字串返回json物件,程式碼如下:
javascript程式碼
12 | var jsonStr = '{"userName": "tiu","userAge": 26,"isMale": true}' ; var json = jQuery.parseJSON(jsonStr); |
請注意Json格式:
對於json很多人經常會這樣來定義:var jsonObj = {name:"serafin", age:26}; 在這裡需要注意的是,這樣定義在上面幾種方法中,只有前面兩種方法可以正常使用,後面兩種方法會出現報錯!其實最標準的定義應該是這樣的:var jsonObj = {"name":"serafin", "age":26}; 也就是說每個key都要用雙引號括住!這樣的格式在上面幾種方法都可以正常使用!