本篇部落格整理記錄了一下js和json之間轉換的幾種情況和方法,順便記錄一下自己在工作上遇到的乙個小問題(看似很簡單!但當時頭腦不清醒寫了很久!敲篇部落格敲打自己)
最近在公司開發乙個頁面,由於element框架的需要,我需要介面給我返回下面這種格式的資料:
initialdata: [,,
]}},,
,]}}
]
可是問題來了,在修改完資料儲存的時候,介面需要我傳入以下格式的json資料:
[
, ]
是的,就這麼乙個簡單的問題,我費了很多時間。。
其實思路非常簡單(可能當時大腦真的卡殼了):
1. 定義乙個全域性的datas空陣列,用來存放需要返回的最終資料;
2. 迴圈遍歷初始資料initialdata,在每一次迴圈中:定義乙個暫存物件fooobj,該物件有兩個屬性,即id和dataarr;
3. 將fooobj的id設定為當前迴圈下的initialdata陣列項的id,將fooobj的dataarr設定為乙個空陣列;
4. 迴圈遍歷當前initialdata陣列項的dataarr,將每個陣列項物件的title推入當前fooobj的dataarr;
5. 將fooobj推入datas陣列
6. 迴圈結束,返回datas
**如下:
function getdata(initialdata)
for (let j = 0; j < initialdata[i].dataobj.dataarr.length; j++)
datas.push(fooobj)
}return datas
}console.log(getdata(initialdata))
當然了,由於介面需要傳入的是json格式的資料,因此我們還需要把當前js物件格式的資料轉換為json格式,這裡簡單總結json和js轉換的幾種常見情況:
使用json.stringify()方法進行轉換
該方法不支援較老版本的ie瀏覽器,比如:ie8(相容模式)、ie7、ie6。
因此上面的問題我們需要再加**:
let data = json.stringify(datas);
return data
1. 使用eval()函式進行轉換,使用時需要在json字元外包裹一對小括號
ie8(相容模式)、ie7、ie6 不要使用此方法。
let jsonobj = eval('(' + jsonstr + ')')
2. 使用json.parse()方法進行轉換
ie8(相容模式)、ie7、ie6 不要使用此方法。
let jsonobj = json.parse(jsonstr)
3. 使用jquery進行轉換
如果我們專案中有使用 jquery,那麼直接使用$.parsejson()方法即可,而且可以確保各個瀏覽器的相容性。
let jsonobj = $.parsejson(jsonstr)
js中json字串與json物件的相互轉換
web前端開發過程中,資料傳輸json是以字串的形式傳遞,而js操作的是json物件。一 json字串轉換為json物件 var obj json.parse str reviver 例 json.parse json.parse true true json.parse foo foo json....
JSON字串與JSON物件
在資料傳輸流程中,json是以文字,即字串的形式傳遞的,而js操作的是json物件,所以,json物件和json字串之間的相互轉換是關鍵。例如 json字串 var str1 json物件 var str2 要運用上面的str1,必須運用下面的要領先轉化為json物件 這一點在ajax返回的時候,經...
JS 操作JSON,字串與JSON之間轉換
1 字串轉json json.parse string 2 json轉字串 json.stringify obj 3 json物件追加資料 使用push方法,用法如下 現在的json資料a為 b的資料格式要和a相同,使用a.push b 後,a的資料為 目前發現push這個方法只能追加第乙個子級的資...