使用 Javascript/Typescript 将现有的 JSON 重新格式化为新的 JSON
Reformat Existing JSON into new JSON using Javascript/Typescript
我目前有一个现有的 JSON,我想 change/reformat 到一个新的 JSON 中,以便能够在外部服务中使用。格式有点复杂,但我无法更改它,所以我必须编辑现有的 JSON。以匹配我想要的输出。
现有JSON:
{
"specifiers": [{
"value": "test",
"type": "text",
"label": "Brand ID"
}, {
"value": "test",
"type": "text",
"label": "Program ID"
}]
}
期望输出:
{
"specifiers": {
"Brand ID": {
"text": {
"value": "test",
"type": "text"
}
},
"Program ID": {
"text": {
"value": "test",
"type": "text"
}
}
}
}
我试过使用循环遍历现有的 JSON,但我真的不知道如何格式化我的循环以使用值作为键?我猜我可能必须使用 Object.keys 或 Object.values,但我不确定如何获取特定键的特定值。
示例格式:
"[label]": {
"[type]": {
"value": [value],
"type": [type]
}
}
非常简单 reduce:
const formattedSpecifiers = existingJSON.specifiers.reduce((newSpecifiers, specifier) => {
newSpecifiers[specifier.label] = {
[specifier.type]: {
type: specifier.type,
value: specifier.value,
},
};
};
return newSpecifiers;
}, {});
const newJSON = { specifiers: formattedSpecifiers };
function tranform({specifiers}) {
return { specifiers: specifiers.reduce((obj, {label, type, value}) => ({...obj, [label]: { [type]: { type, value } } }), {}) }
}
const json = {
"specifiers": [{
"value": "test",
"type": "text",
"label": "Brand ID"
}, {
"value": "test",
"type": "text",
"label": "Program ID"
}]
}
console.log(tranform(json))
你可以使用#Array.reduce。下面的代码片段。
let input = {
"specifiers": [{
"value": "test",
"type": "text",
"label": "Brand ID"
}, {
"value": "test",
"type": "text",
"label": "Program ID"
}]
}
const res = input.specifiers.reduce((res, obj) => {
const {
label,
type,
value
} = obj
res[label] = {};
res[label][type] = {
value,
type
};
return res;
}, {});
console.log(res);
我目前有一个现有的 JSON,我想 change/reformat 到一个新的 JSON 中,以便能够在外部服务中使用。格式有点复杂,但我无法更改它,所以我必须编辑现有的 JSON。以匹配我想要的输出。
现有JSON:
{
"specifiers": [{
"value": "test",
"type": "text",
"label": "Brand ID"
}, {
"value": "test",
"type": "text",
"label": "Program ID"
}]
}
期望输出:
{
"specifiers": {
"Brand ID": {
"text": {
"value": "test",
"type": "text"
}
},
"Program ID": {
"text": {
"value": "test",
"type": "text"
}
}
}
}
我试过使用循环遍历现有的 JSON,但我真的不知道如何格式化我的循环以使用值作为键?我猜我可能必须使用 Object.keys 或 Object.values,但我不确定如何获取特定键的特定值。
示例格式:
"[label]": {
"[type]": {
"value": [value],
"type": [type]
}
}
非常简单 reduce:
const formattedSpecifiers = existingJSON.specifiers.reduce((newSpecifiers, specifier) => {
newSpecifiers[specifier.label] = {
[specifier.type]: {
type: specifier.type,
value: specifier.value,
},
};
};
return newSpecifiers;
}, {});
const newJSON = { specifiers: formattedSpecifiers };
function tranform({specifiers}) {
return { specifiers: specifiers.reduce((obj, {label, type, value}) => ({...obj, [label]: { [type]: { type, value } } }), {}) }
}
const json = {
"specifiers": [{
"value": "test",
"type": "text",
"label": "Brand ID"
}, {
"value": "test",
"type": "text",
"label": "Program ID"
}]
}
console.log(tranform(json))
你可以使用#Array.reduce。下面的代码片段。
let input = {
"specifiers": [{
"value": "test",
"type": "text",
"label": "Brand ID"
}, {
"value": "test",
"type": "text",
"label": "Program ID"
}]
}
const res = input.specifiers.reduce((res, obj) => {
const {
label,
type,
value
} = obj
res[label] = {};
res[label][type] = {
value,
type
};
return res;
}, {});
console.log(res);