1. 程式人生 > >JavaScript中字串轉Json方法小記

JavaScript中字串轉Json方法小記

    之前一朋友在說起js中關於json字串轉json物件的問題,之後想寫個文章簡單記錄一下的後來就給忘了,現在記得趕緊記錄一下^_^

    幾種字串轉json的方法:

    1、在js中把json字串轉json物件的方法不止一種,最常見的一種方式如下,使用到eval方法
javascript程式碼?
12varjsonStr = '{"userName": "tiu","userAge": 26,"isMale": true}';varjson = eval("("+ jsonStr + ")");
    上面這種方法有一點要注意的是要在json字串的兩邊加上括號,然後再用eval函式就行轉換!

    2、另外一種是使用Function來進行轉換,大致如下:
javascript程式碼?
12varjsonStr = '{"userName": "tiu","userAge": 26,"isMale": true}'
;varjson = (newFunction("return "+ jsonStr))();
    可以看到其原理就是拼接js程式碼字串,然後使用Function建立一個匿名方法然後呼叫之!

    3、還有一種是使用JSON全域性物件,不過比較可惜的是IE8以下的版本木有這個物件(囧TZ~),如果不考慮相容IE8一下版本的話JSON全域性物件是個很有用的東西,使用的程式碼如下:
javascript程式碼?
123varjsonStr = '{"userName": "tiu","userAge": 26,"isMale": true}';varjson = JSON.parse(jsonStr);
varstr = JSON.stringify(json);
    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程式碼
?
12varjsonStr = '{"userName": "tiu","userAge": 26,"isMale": true}';varjson = jQuery.parseJSON(jsonStr);
    需要注意的是,這個方法是1.4版本才有的!


    請注意Json格式:

    對於json很多人經常會這樣來定義:var jsonObj = {name:"serafin", age:26}; 在這裡需要注意的是,這樣定義在上面幾種方法中,只有前面兩種方法可以正常使用,後面兩種方法會出現報錯!其實最標準的定義應該是這樣的:var jsonObj = {"name":"serafin", "age":26}; 也就是說每個key都要用雙引號括住!這樣的格式在上面幾種方法都可以正常使用!