JSON.parse() 方法把會把一個 JSON 字串轉換成 JavaScript 的數值或是物件,以下是一個可以將物件中每個屬性中的值做一次 JSON.parse() 的函式:
function parseObjectValues(obj) {
// 檢查傳入的參數是否為物件
if (typeof obj !== 'object' || obj === null) {
throw new Error('parseObjectValues(): Invalid argument. Expected an object.');
}
// 遍歷物件的每個屬性,並將其值做一次 JSON.parse()
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
try {
obj[key] = JSON.parse(obj[key]);
} catch (e) {
// 若值無法解析為 JSON,則不做處理
}
}
}
return obj;
}
使用方法:
const myObj = {
foo: '{"bar": 123}',
baz: '["qux", 456]'
};
console.log(parseObjectValues(myObj));
// 輸出:{ foo: { bar: 123 }, baz: [ 'qux', 456 ] }
此函式會檢查傳入的參數是否為物件,如果不是則會拋出一個錯誤。接著,它會遍歷物件的每個屬性,並試著將其值解析為 JSON 格式。如果解析成功,就將屬性值改為解析後的結果;如果解析失敗,就不做任何處理,保留原本的屬性值。最後,函式會回傳處理過的物件。