![](/img/trans.png)
[英]convert JSON array of key value pairs to JSON Array of strings in Javascript
[英]Javascript: From JSON array of strings in the form of key:value to array of objects
假设我从 API 调用中收到了这个 JSON 数组。
[
"{'apple': 'enabled'}",
"{'banana': 'disabled'}"
]
我如何将其转换为:
[
{
label: 'apple',
value: 'enabled'
},
{
label: 'banana',
value: 'disabled'
}
]
字段的数量和值当然是可变的。
使用 JSON5.parse() 我可以将其转换为:
[
{
apple: 'enabled',
},
{
banana: 'disabled'
}
]
但这仍然不是我需要的。
我怎样才能实现我需要的转换,而没有可能改变内部值的变通办法?
谢谢
const apiArray = [
"{'apple': 'enabled'}",
"{'banana': 'disabled'}"
];
const returnArray = [];
for (const element of apiArray) {
const parsedObj = JSON.parse(element);
const label = Object.keys(element)[0];
const value = parsedObj[label];
returnArray.push({"label": label, "value": value});
}
这会自行检查初始数组的每个元素并提取 label 和值。 然后将它们以正确的格式推送到 returnArray 中。
我设法使它与此一起工作:(感谢@Alexander)
data.map(el=>{
const parsed = JSON5.parse(el)
return{
label: Object.keys(parsed)[0],
value: Object.values(parsed)[0]
}
})
但是,它不是很干净。
你可以试试这个
var newArr = [];
apiArray.forEach((element) => {
let obj = JSON.parse(element.replaceAll("'", '"'));
newArr.push({ label: Object.keys(obj)[0], value: Object.values(obj)[0] });
});
console.log(JSON.stringify(newArr));
你可以尝试这样的事情:
myArray.map((data) => {
const parsedData = JSON.parse(data);
return {
label: Object.keys(parsedData).join(),
value: Object.values(parsedData).join(),
};
});
Output:
[{
"label": "apple",
"value": "enabled"
},
{
"label": "banana",
"value": "disabled"
}]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.