文字列をJSONに変換
2169 ワード
Ajaxを利用したプロジェクト開発では,JSON形式の文字列をフロントエンドに戻す必要があり,フロントエンドはJSONオブジェクト(JSON)として解析されることが多い.ECMA-262(E 3)ではJSON概念を標準には書かれていないが,ECMA-262(E 5)ではJSONの概念が正式に導入され,グローバルなJSONオブジェクトとDateのtoJSONメソッドが含まれている.1,eval方式解析
?
1
2
3
4
2,new Function形式
?
1
2
3
4
IE 6/7の文字列に改行()が含まれている場合、new Functionは解析できませんが、evalはできます.
3、グローバルなJSONを使う
?
1
2
3
現在のIE 8(S)/Firefox 3.5+/Chrome 4/Safari 4/Opera 10がこの方法を実現した.JSONを使用します.parseはJSON規範を厳格に守らなければならない.属性は引用符で引き起こさなければならない.
?
1
2
nameは引用符ではなくJSONを使用する.parseのすべてのブラウザに異常が投げ出され、解析に失敗しました.前の2つの方法は大丈夫です.
?
1
2
3
4
function
strToJson(str){
var
json = eval(
'('
+ str +
')'
);
return
json;
}
2,new Function形式
?
1
2
3
4
function
strToJson(str){
var
json = (
new
Function(
"return "
+ str))();
return
json;
}
IE 6/7の文字列に改行()が含まれている場合、new Functionは解析できませんが、evalはできます.
3、グローバルなJSONを使う
?
1
2
3
function
strToJson(str){
return
JSON.parse(str);
}
現在のIE 8(S)/Firefox 3.5+/Chrome 4/Safari 4/Opera 10がこの方法を実現した.JSONを使用します.parseはJSON規範を厳格に守らなければならない.属性は引用符で引き起こさなければならない.
?
1
2
var
str =
'{name:"jack"}'
;
var
obj = JSON.parse(str);
// --> parse error
nameは引用符ではなくJSONを使用する.parseのすべてのブラウザに異常が投げ出され、解析に失敗しました.前の2つの方法は大丈夫です.