js中json字串與json物件格式轉換

2021-10-01 02:26:39 字數 1648 閱讀 4762

本篇部落格整理記錄了一下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這個方法只能追加第乙個子級的資...