JSON字符串和對象相互轉(zhuǎn)換實(shí)例分析
本文實(shí)例分析了JSON字符串和對象相互轉(zhuǎn)換方法。分享給大家供大家參考,具體如下:
同事問了我一個問題——server端返回了一個json結(jié)構(gòu)的字符串,怎么樣去訪問json對象里面的值?jquery有沒有對返回的JSON數(shù)據(jù)進(jìn)行解析?
我自己寫了一個小的demo,還有從網(wǎng)上查了一些資料,在這里跟大家分享一下
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script src="jquery-1.6.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(
function(){
var json = {"name":"Mike","sex":"女","age":29};
alert(typeof json);
var temp = obj2str(json);
alert(temp);
alert(typeof temp);
}
);
//下面這個方法是將json對象轉(zhuǎn)換為字符串
function obj2str(o){
var r = [];
if(typeof o =="string") return "\""+o.replace(/([\'\"\\])/g,"\\$1").replace(/(\n)/g,"\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t")+"\"";
if(typeof o =="undefined") return "undefined";
if(typeof o == "object"){
if(o===null) return "null";
else if(!o.sort){
for(var i in o)
r.push(i+":"+obj2str(o[i]))
r="{"+r.join()+"}"
}else{
for(var i =0;i<o.length;i++)
r.push(obj2str(o[i]))
r="["+r.join()+"]"
}
return r;
}
return o.toString();
}
/*使用jquery插件,需要注意的是json的key-value必須都為字符串,即都需要使用雙引號包起來,
不能使用單引號,如果value是數(shù)字就不需要用雙引號包起來*/
function jquery_string_to_json(){
var jsonString = '{"name":"huangbiao","sex":"boy","age":16}';
//var jsonString = "{'name':'huangbiao','sex':'boy','age':16}";//錯誤的聲明
alert(typeof jsonString);
var obj = jQuery.parseJSON(jsonString);
alert(typeof obj);
}
/*使用eval方法對于字符串里面的key-value都必須使用雙引號括起來,不能使用單引號,否則不
能夠正常解析*/
function String_to_JSON(){
var json = '{"name":"huangbiao","sex":"boy","age":16}';
var temp = eval('('+json+')');//eval方法里面的括號是不能夠少的,否則報腳本錯誤
alert(typeof temp);
alert(temp.name);
//使用JSON對象只能在IE8以上的版本支持,因此不建議使用這種方式轉(zhuǎn)換
//var json = '{"name":"Mike","sex":"女","age":"29"}';
//var temp = JSON.parse(json);
//alert(temp.name);
}
</script>
<title>無標(biāo)題文檔</title>
</head>
<body>
</body>
</html>
在工作中發(fā)現(xiàn)server端傳給前端JSON格式的字符串,使用eval("("+json+")");沒有辦法將得到的字符串轉(zhuǎn)換為JSON對象,解決辦法如下:
function obj2str(o){
var r = [];
if(typeof o =="string") return "\""+o.replace(/([\'\"\\])/g,"\\$1").replace(/(\n)/g,"\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t")+"\"";
if(typeof o =="undefined") return "undefined";
if(typeof o == "object"){
if(o===null) return "null";
else if(!o.sort){
for(var i in o)
r.push(i+":"+obj2str(o[i]))
r="{"+r.join()+"}"
}else{
for(var i =0;i<o.length;i++)
r.push(obj2str(o[i]))
r="["+r.join()+"]"
}
return r;
}
return o.toString();
}
function json2obj(o){
var result = obj2str(o);
return eval("(" + result + ")");
}
調(diào)用json2obj(o)這個方法即可。
PS:這里再為大家推薦幾款json在線工具,相信大家在今后的開發(fā)中可以用得到:
在線JSON代碼檢驗(yàn)、檢驗(yàn)、美化、格式化工具:
http://tools.jb51.net/code/json
JSON在線格式化工具:
http://tools.jb51.net/code/jsonformat
在線XML/JSON互相轉(zhuǎn)換工具:
http://tools.jb51.net/code/xmljson
json代碼在線格式化/美化/壓縮/編輯/轉(zhuǎn)換工具:
http://tools.jb51.net/code/jsoncodeformat
C語言風(fēng)格/HTML/CSS/json代碼格式化美化工具:
http://tools.jb51.net/code/ccode_html_css_json
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript中json操作技巧總結(jié)》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
跟我學(xué)習(xí)javascript的作用域與作用域鏈
跟我學(xué)習(xí)javascript的作用域與作用域鏈,感興趣的小伙伴們可以參考一下2015-11-11
scroll事件實(shí)現(xiàn)監(jiān)控滾動條并分頁顯示(zepto.js)
這篇文章主要為大家詳細(xì)介紹了scroll事件實(shí)現(xiàn)監(jiān)控滾動條并分頁顯示示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12
Javascript自定義函數(shù)判斷網(wǎng)站訪問類型是PC還是移動終端
如果,能夠判斷出訪問Web網(wǎng)頁的類型(PC還是移動終端)。就可以解決許多絢麗多彩的 Flash效果出不來的問題2014-01-01
在layui中使用form表單監(jiān)聽ajax異步驗(yàn)證注冊的實(shí)例
今天小編就為大家分享一篇在layui中使用form表單監(jiān)聽ajax異步驗(yàn)證注冊的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09

