Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

106
Vistas
Convertir un objeto json a otro con jquery

Tengo un objeto json de entrada, y quiero el json de salida a continuación de una función jquery. ¿Cómo puedo lograrlo con líneas mínimas de código?

Aporte

 { "dashboardWidgetFacility": [{ "deskUsageInput": { "breakup": [{ "location_breakup_0": ["{\"id\":1,\"name\":\"campus\"},{\"id\":8,\"name\":\"building \"}"], "teams_breakup_0": ["3", "6"] }, { "location_breakup_1": ["{\"id\":1,\"name\":\"campus\"},{\"id\":8,\"name\":\"building \"},{\"id\":83,\"name\":\"floor \"}"], "teams_breakup_1": ["3", "2"] }] } }] }

Objeto de salida

 { "dashboardWidgetFacility": [{ "campus": { "id": 1 }, "building": { "id": 8 }, "widgetInput": { "deskUsageInput": { "teams": ["3", "6"] } } }, { "campus": { "id": 1 }, "building": { "id": 8 }, "floor": { "id": 83 }, "widgetInput": { "deskUsageInput": { "teams": ["3", "2"] } } }] }

Aquí la ruptura de ubicación location_breakup_{index} tiene el índice.

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Tuve que corregir esos valores de location_breakup porque tienes que analizar el json, pero no son json técnicamente válidos por sí solos, ya que les faltan los corchetes a los lados.

 const input = { dashboardWidgetFacility: [ { deskUsageInput: { breakup: [ { location_breakup_0: [ '{"id":1,"name":"campus"},{"id":8,"name":"building "}', ], teams_breakup_0: ['3', '6'], }, { location_breakup_1: [ '{"id":1,"name":"campus"},{"id":8,"name":"building "},{"id":83,"name":"floor "}', ], teams_breakup_1: ['3', '2'], }, ], }, }, ], }; const output = Object.values( input.dashboardWidgetFacility[0].deskUsageInput.breakup ).reduce( (acc, item) => { const nestedItem = Object.keys(item).reduce((acc, key) => { let locationParsed; let teamsBreakup; if (key.startsWith('location_breakup')) { locationParsed = JSON.parse('[' + item[key] + ']'); } if (key.startsWith('teams_breakup')) { teamsBreakup = item[key]; } const obj = (locationParsed || []).reduce( (acc, item) => { const { name, id } = item; return { ...acc, [name.trim()]: { id, }, }; }, { widgetInput: { deskUsageInput: { teams: null, }, }, } ); obj.widgetInput.deskUsageInput.teams = teamsBreakup; return { ...acc, ...obj, }; }, {}); return { dashboardWidgetFacility: [...acc.dashboardWidgetFacility, nestedItem], }; }, { dashboardWidgetFacility: [], } ); console.log(output);

about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda