Estoy luchando para convertir el JSON a continuación en el formato JSON esperado usando JavaScript.
JSON actual:
{ "furniture": { "matter": [ { "matter1": "Matter 1 value" }, { "matter2": "Matter 2 value" }, { "matter3": "Matter 3 value" } ], "suspense": [ { "suspense1": "suspense 1 value" }, { "suspense2": "suspense 2 value" } ], "Direct": [ { "System": "System value" } ], "Road": [ { "Road key 1 ": "Road value " } ] } }
JSON esperado:
{ "furniture": { "matter": { "matter1": "Matter 1 value", "matter2": "Matter 2 value", "matter3": "Matter 3 value" }, "suspense": { "suspense1": "suspense 1 value", "suspense2": "suspense 2 value" }, "Direct": { "System": "System value" }, "Road": { "Road key 1 ": "Road value " } } }
Nota: los muebles en el código anterior son solo estáticos. Aparte de eso, todas las claves y valores se generan dinámicamente.
Puede buscar matrices y crear un objeto unido; de lo contrario, nivele el nivel más profundo.
const flat = object => Object.fromEntries(Object .entries(object) .map(([k, v]) => [k, Array.isArray(v) ? Object.assign({}, ...v) : v && typeof v === 'object' ? flat(v) : v ])), data = { furniture: { matter: [{ matter1: "Matter 1 value" }, { matter2: "Matter 2 value" }, { matter3: "Matter 3 value" }], suspense: [{ suspense1: "suspense 1 value" }, { suspense2: "suspense 2 value" }], Direct: [{ System: "System value" }], Road: [{ "Road key 1 ": "Road value " }] }, Diversity: { "Sistema de direção": "Hidráulica" } }, result = flat(data); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
prueba esto
var furniture = {}; for (const property in jsonOrig.furniture) { var newObj = {}; jsonOrig.furniture[property].forEach((value) => { for (const prop in value) { newObj[prop] = value[prop]; } furniture[property] = newObj; }); } var newJson = { furniture: furniture };