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

155
Vistas
llenar una matriz en mecanografiado/reaccionar con objetos convertidos desde una matriz JSON

Tengo un archivo JSON con alrededor de 700 líneas llenas de dispositivos y alguna información sobre ellos (es decir, número de serie, Macadress, puerto...).

En otro archivo he creado un objeto como

 type jsonObj = { serialNumber: string; macAdress: string; port: string; }

Y ahora quiero llenar una tabla con estos objetos jsonDevice en un bucle, pero de alguna manera no consigo que funcione.

Mi código se ve así:

 const ObjectTable: FC = () => { const entities: jsonObj[] = [ { serNom: jsonDevices[0].serNom, //jsonDevices is my json file macAdr: jsonDevices[0].macAdr, tunPort: jsonDevices[0].tunPort }, ];

FC es una importación de reaccionar y con el código anterior está funcionando. Recibo una salida de tabla con los datos para esta línea (por ejemplo, jsonDevices[0].serNom me da correctamente 123456789) pero ahora quiero llenar automáticamente toda la lista/matriz con todas las líneas restantes de los dispositivos json. En Java lo habría resuelto con un bucle como ese:

 for (int i = 0, i<jsonObj.length, i++){ ObjectTable.add(jsonObj[i].serNom); ObjectTable.add(jsonObj[i].macAdr); ObjectTable.add(jsonObj[i].tunPort); }

Por favor, ayúdame. Tengo dolor de cabeza por este problema.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Supongamos que tiene algunos datos como este:

 [ { id: 1, name: "test-1" }, { id: 2, name: "test-random" }, { id: 3, desc: "444" } ]

Y tienes alguna estructura de estos datos, crea una interface

 interface SomeInterface { id: number; name?: string; desc?: string; }

Ahora es simple si los datos de entrada JSON se denominan someData y los datos resultantes se denominan hmm , puede hacer algo como esto:

 const hmm: SomeInterface[] = []; someData.map((data) => { hmm.push(data as SomeInterface); });

También puedes simplificar por:

 hmm: SomeInterface[] = someData as SomeInterface[];

Aquí hay un codesandbox, siéntete libre de jugar con él: https://codesandbox.io/s/dreamy-chatelet-hr5ub6?file=/src/App.tsx:343-456

Y aquí hay dos subprocesos suaves, ambos en la misma pregunta, discutiendo por qué la interfaz sobre los tipos :

  • https://stackoverflow.com/a/65948871/10305444
  • https://stackoverflow.com/a/54101543/10305444
about 4 years ago · Juan Pablo Isaza Denunciar

0

Nota: Su código no se compilará porque ha declarado que el tipo jsonObj tiene esta forma:

 type jsonObj = { serialNumber: string; macAdress: string; port: string; }

Pero luego está intentando crear una matriz de objetos jsonObj que usan diferentes nombres de clave:

 { serNom: jsonDevices[0].serNom, //jsonDevices is my json file macAdr: jsonDevices[0].macAdr, tunPort: jsonDevices[0].tunPort }

Aparte de eso, la solución a su problema es mucho más simple de lo que parece: Array.prototype.map :

 const entities: jsonObj[] = jsonDevices.map((device) => { return { serialNumber: device.serNom, macAddress: device.macAdr, port: device.tunPort, }; });

Otra nota: estos nombres de variables abreviados son difíciles de leer. Recomiendo elegir una convención y apegarse a ella. Si su archivo JSON siguiera la convención de nomenclatura de jsonObj , entonces ni siquiera necesitaría asignar el JSON a una forma diferente; simplemente haría esto:

 const entities = jsonDevices as jsonObj[];

(Esto se conoce como aserción de tipo : se usa la palabra clave as seguida de un tipo para asegurar al compilador de TypeScript que el valor de la izquierda es del tipo especificado).

about 4 years ago · Juan Pablo Isaza 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