Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

189
Visualizações
¿Transformar una carga útil JSON explícita en una carga útil genérica impulsada por matriz?

Actualmente estoy trabajando en un proyecto que ha insistido en definir explícitamente más de 1700 preguntas en un esquema de datos JSON para una API y se está saliendo de control. He estado sugiriendo una estructura más genérica para el esquema y dejo que los datos hablen para decirle cuál es el contexto.

Si bien hay debates sobre qué esquema usar, hemos decidido en nuestros sistemas internos seguir adelante y usar un modelo más genérico, incluso si el modelo externo es el explícito. Esto significa que necesitamos un adaptador para convertir de uno a otro, hasta el momento en que podamos usar el que queríamos en primer lugar.

El negocio es una tienda de Java, no sé si aconsejar construir el adaptador en Java o si podemos incorporar algún JavaScript ligero para hacer el trabajo, tal vez en forma de configuración.

Mi pregunta es: ¿Cómo abordaría la conversión del primer ejemplo de JSON en el segundo ejemplo de JSON? Se asigna desde objetos definidos explícitamente a objetos genéricos en matrices. Gracias por considerar mi pregunta.

Ejemplo uno

 { "nested_object" : { "department_one" : { "floor" : "4", "product_one" : { "quantity" : 10, "size" : "L" }, "product_two" : { "quantity" : 5, "size" : "S" } }, "department_two" : { "floor" : "2", "product_thirteen" : { "quantity" : 1, "size" : "M" }, "product_eleven" : { "quantity" : 8, "size" : "L" } } } }

Ejemplo dos

 { "departments" : [ { "department_name" : "department_one", "floor" : "4", "products" : [ { "product_name" : "product_one", "quantity" : 10, "size" : "L" }, { "product_name" : "product_two", "quantity" : 5, "size" : "S" } ] }, { "department_name" : "department_two", "floor" : "2", "products" : [ { "product_name" : "product_thirteen", "quantity" : 1, "size" : "M" }, { "product_name" : "product_eleven", "quantity" : 8, "size" : "L" } ] } ] }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede usar una combinación de Object.keys (to grab product and department names) . A continuación se muestra una implementación rápida.

 const obj1 = { "nested_object" : { "department_one" : { "floor" : "4", "product_one" : { "quantity" : 10, "size" : "L" }, "product_two" : { "quantity" : 5, "size" : "S" } }, "department_two" : { "floor" : "2", "product_thirteen" : { "quantity" : 1, "size" : "M" }, "product_eleven" : { "quantity" : 8, "size" : "L" } } } } const transformedObj = { departments: [ ], }; //holds all department names const departmentKeys = Object.keys(obj1.nested_object) const departmentsArr = departmentKeys.map((key) => { const floor = obj1.nested_object[key].floor //remove floor reference, since we already stored the value above delete obj1.nested_object[key].floor //holds all product names const productsKeysArr = Object.keys(obj1.nested_object[key]) //holds all product objects for respective department const productsArr = productsKeysArr.map((product) => { const quantity = obj1.nested_object[key][product].quantity const size = obj1.nested_object[key][product].size return { product_name: product, quantity: quantity, size: size } }) return { department_name: key, floor: floor, products: productsArr } }) //assign departments array to transformed object transformedObj.departments = departmentsArr console.log(transformedObj)

about 4 years ago · Juan Pablo Isaza Relatório

0

Esta sería mi opinión sobre esto. Me gusta la concisión y la expresividad en las implementaciones:

 const data = { "nested_object": { ... }} Object.entries(data.nested_object).map(([department_name, {floor, ...ps}]) => ({ department_name, floor, products: Object.entries(ps).map(([product_name, p]) => ({product_name, ...p})) }))
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda