對 JSON 相當陌生,我正在努力了解轉換。我有一個陣列:
['Role1', 'Role2', 'Role3']
我正在嘗試將其字串化,以便它讀取為
{"Role1": true, "Role2": true, "Role3": true}
到目前為止,我已經嘗試將原始陣列分配給一個物件并呼叫 stringify,但我不知道如何在字串中添加布林值。提前致謝。
uj5u.com熱心網友回復:
在轉換為 JSON 之前,您必須創建一個中間 reduce 函式來分配這些值。
const data = ['Role1', 'Role2', 'Role3']
const makeJson = () =>
JSON.stringify(data.reduce((a, c) => ({ ...a, [c]: true }), {}))
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
uj5u.com熱心網友回復:
這是您需要的輸出嗎?
const arr = ['Role1', 'Role2', 'Role3']
const result = JSON.stringify(arr.reduce((a, n)=>{
return {
...a,
[n]: new Boolean(true).toString()
}
},{}))
console.log(result)
uj5u.com熱心網友回復:
另一種方法是結合Object.fromEntries和Array.prototype.map
const data = ['Role1', 'Role2', 'Role3']
const result = Object.fromEntries(data.map(s => [s, true]));
console.log(JSON.stringify(result));
uj5u.com熱心網友回復:
這應該可以解決問題:
let rolesArray = ['Role1', 'Role2', 'Role3'];
let rolesObject = {};
// iterate over roles to fill an object
rolesArray.forEach((role) => {
rolesObject[role] = true;
});
JSON.stringify(rolesObject) // Outputs the desired string
或者以更簡潔的方式,但對于 SO 示例來說可讀性較差:
JSON.stringify(rolesArray.reduce((o, s) => { o[s] = true; return o }, {}));
uj5u.com熱心網友回復:
我更喜歡使用 for 回圈——仍然有效,但其他方法會很短。
var array = ["Role1", "Role2", "Role3"],
json = {};
for (i = 0; i < array.length; i ) {
json[array[i]] = true;
}
console.log(json);
uj5u.com熱心網友回復:
使用reduce()以便我們可以將值設定為true沒有第二個回圈
使用擴展運算子( ...) 合并物件
const data = ['Role1', 'Role2', 'Role3'];
const obj = data.reduce((prev, cur) => ({ ...prev, [cur]: true }), {});
console.log(obj);
console.log(JSON.stringify(obj));
{
"Role1": true,
"Role2": true,
"Role3": true
}
{"Role1":true,"Role2":true,"Role3":true}
uj5u.com熱心網友回復:
如果你想這樣做,你必須在下面的代碼。
json-encode(Array)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/324339.html
標籤:javascript json
上一篇:創建自定義動態JSON字串
