Búsqueda de sitios web

javascript - Analizar un array JSON dentro de otro array y vincularlo con pdfmake


Soy nuevo en Angular, estoy intentando analizar un array dentro de mi array, no puedo analizar este array ya que usando mi código aparece un error Unexpected token u in JSON at position 0, he buscado por todo Internet y hay muchos ejemplos pero ninguno funciona en mi caso, no entiendo qué está mal con mi código, su ayuda es muy apreciada.

datos

{ 
"employees":[ 
  { 
     "id":"f790cb86-4d41-401c-2a45-08d745b83164",
     "firstName_FL":"Employee Name",
     "employeeJobStatuses":[ 
        { 
           "id":"bd58a1a3-6dd7-4cd5-6c79-08d76cf25ba3",
           "status":"STATUS_ACTIVE"
        }
      ]
    }
  ]
}

empleados.componente.ts

   table: {
        headerRows: 1,
        widths: [ '*', '*', '*', '*', '*', '*' ],
        alignment: 'center',
        body: [[
        {text: 'Name', style: 'header'}, 
        {text: 'Position', style: 'header'},
        {text: 'Department', style: 'header'},
        {text: 'Hiring Date', style: 'header'}, 
        {text: 'First Contracting Salary', style: 'header'},
        {text: 'Status', style: 'header'},
      ]]
            .concat(this.jsonObj.map((element, i) => 
            [
             element['firstName_FL'],
             element['position']['name_FL'],
             element['department']['name_FL'],
             element['hiringDate'].slice(0, 10),
             element['firstContractingSalary'],
             element.employeeJobStatuses.map((x, j) => ({ ...x,
              Status: x
            }))
            ]
            ))

      }

Todo está saliendo con el resultado que necesito excepto esta línea JSON.parse(element['employeeJobStatuses']['status'])

Respuesta #1

Analiza tu entrada a un objeto JS válido, luego haz con él lo que sea necesario.

// your input
const jsonString = JSON.stringify({
  "data": {
    "employee": [{
      "id": "f790cb86-4d41-401c-2a45-08d745b83164",
      "firstName_FL": "Employee Name",
      "employeeJobStatuses": [{
        "id": "bd58a1a3-6dd7-4cd5-6c79-08d76cf25ba3",
        "status": "STATUS_ACTIVE"
      }]
    }]
  }
})
// parse your input to js valid object
const jsonObj = JSON.parse(jsonString);

// do wathever you need to do
const newObj = jsonObj.data.employee.map((element, i) => ({
  ...element,
  employeeJobStatuses: element.employeeJobStatuses.map((x, j) => ({ ...x,
    status: x.status
  }))
}))

console.log(newObj);