Estoy tratando de crear un objeto dentro de un objeto JSON que luego se completará desde FormData:
function toJSONstring(form) { let object = {`"${form.name}": {}`}; //Property assignment expected.ts(1136) let formData = new FormData(form); formData.forEach((value, key) => { // Reflect.has in favor of: object.hasOwnProperty(key) if (!Reflect.has(object, key)) { object[key] = value; return; } if (!Array.isArray(object[key])) { object[key] = [object[key]]; } object[key].push(value); }); form.reset(); return JSON.stringify(object); }Lo que quiero obtener es el siguiente JSON:
{ "network_settings": { "connection": "wifi", "type": "dhcp", "ssid": "Jorj_2.4", "ip_address": "", "gateway": "", "subnet": "", "dns": "" } } pero obtengo la Property assignment expected.ts(1136) .
si reemplazo
let object = {`"${form.name}": {}`}; con let object = {}; luego obtengo un objeto JSON normal:
{ "connection": "wifi", "type": "dhcp", "ssid": "Jorj_2.4", "ip_address": "", "gateway": "", "subnet": "", "dns": "" }¿Cómo puedo crear el objeto anidado que quiero?
Para las claves dinámicas en el script, debe encerrar su expresión dentro de []
const form = { name: 'network_settings' } let obj = {[form.name]: {}}; console.log(obj);Vuelve a lo que tenías primero:
let object = {};Y después de haber llenado el objeto, envuélvalo usando la sintaxis de nombre de propiedad calculada :
return JSON.stringify({ [form.name]: object });