Estoy usando node expressionparser en combinación con la biblioteca jsonpath-plus para analizar las rutas json y leer los datos de un objeto json según el término devuelto. Así es como se ve mi código analizador:
export function initialiseParser(workerObject: WorkerObjectType): ExpressionParser { return init(formula, (term: string) => { if (term === '$NULL') { return '$NULL'; } else if (term.startsWith('$VALUE:')) { const [, key] = term.split('$VALUE:'); return getJsonData({ path: key, json: workerObject }) ?? '$NULL'; } else { return '$NULL'; } }); } Estoy tratando de analizar la siguiente expresión: $VALUE:Worker_Data.Employment_Data.Worker_Job_Data[?(@.attributes['wd:Primary_Job'] === '1')].Position_Data.Business_Site_Summary_Data.Name
Al ejecutar esto a través del analizador, puedo ver que el término se evalúa como .Position_Data.Business_Site_Summary_Data.Name . El resultado que me gustaría lograr es obtener la expresión completa: Worker_Data.Employment_Data.Worker_Job_Data[?(@.attributes['wd:Primary_Job'] === '1')].Position_Data.Business_Site_Summary_Data.Name .
Mi intuición es que el lenguaje de la fórmula reconoce el '[]' y lo analiza en otra cosa, pero mirando los documentos no tengo claro qué.
Me pregunto si alguien podría arrojar algo de luz sobre esto para mí. Si la fórmula usa [] para otra cosa, ¿cómo puedo escapar del carácter cuando lo uso en la expresión? También abierto a otras soluciones. Por favor, hágamelo saber si se requieren más detalles.