#javascript #dictionary
#javascript #словарь
Вопрос:
Я пытаюсь преобразовать следующие переменные в JSON
class RHypervisor extends React.Component {
constructor(props) {
super(props);
this.label = "hv01"
this.state = {
hypervisor_type: "xen",
cpu_units: 2250,
hypervisor_group_label: "kvm_hvz_1",
hardware_configs: {
vsphere: {}
}
}
}
var myMap = new Map().set(this.label, this.state)
console.log(myMap)
Код работает нормально, но я не могу получить JSON, который мне нужен, в следующем формате:
{
"hv01": {
"cpu_units": "2250",
"hypervisor_group_label": "kvm_hvz_1",
"hardware_configs": {
"vsphere": {...}
}
}
}
Я попал в консоль:
[
"hv01",
{
"hypervisor_type": "xen",
"cpu_units": 2250,
"hypervisor_group_label": "kvm_hvz_1",
"hardware_configs": {
"vsphere": {...}
}
}
}
]
Как я могу получить ключ верхнего уровня как this.label
и следующий объект this.state
PS. Я совершенно новичок в JS, работаю с этим всего несколько дней… пожалуйста, помогите мне в этом вопросе
Комментарии:
1. Вы понимаете, что JSON и Map — это 2 разные вещи, верно? Под JSON обычно подразумевается строка, которая может быть десериализована в JS.
Ответ №1:
Попробуйте использовать Map.entries()
и Object.fromEntries()
:
const myMap = new Map();
myMap.set("hv01", {
hypervisor_type: "xen",
cpu_units: 2250,
hypervisor_group_label: "kvm_hvz_1",
hardware_configs: {
vsphere: {}
}
});
console.log(Object.fromEntries([...myMap.entries()]));
Объяснение:
[...myMap.entries()]
возвращает массив пар ключ-значение ( [["hv01", { ... }]]
) и Object.fromEntries()
создает новый объект с этими парами ключ-значение.