UNPKG

@edugouvfr/ngx-dsfr

Version:

NgxDsfr est un portage Angular des éléments d'interface du Système de Design de l'État Français (DSFR).

28 lines 3.86 kB
/** * https://www.w3resource.com/JSON/JSONPath-with-JavaScript.php * @param obj : object|array This parameter represents the Object representing the JSON structure. * @param path : string This parameter represents JSONPath expression string. * @return une valeur extrait de l'objet Json ou undefined si le path est erroné */ export function jsonPath2Value(obj, path) { const keys = path.split('.'); // value est soit un objet JSON, soit une valeur terminale let value = obj; const breakException = {}; try { keys.forEach((key) => { if (!value) throw breakException; // key, ex: 'labels[20]' const matchArr = key.match(/([^\[]*)\[(\d*)\]/); const k = matchArr ? matchArr[1] : undefined; // clé sans l'indice, ex : 'labels' const i = matchArr ? matchArr[2] : undefined; // indice, ex : 20 value = k && i ? value[k][i] : value[key]; }); } catch (e) { // console.error(`Le chemin '${path}' ne correspond pas à une valeur`); } return value; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1kc2ZyLWNvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvdXRpbHMvanNvbi11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsR0FBUSxFQUFFLElBQVk7SUFDbkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QiwwREFBMEQ7SUFDMUQsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ2hCLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUMxQixJQUFJLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsTUFBTSxjQUFjLENBQUM7WUFDakMsd0JBQXdCO1lBQ3hCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNoRCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsbUNBQW1DO1lBQ2pGLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxrQkFBa0I7WUFDaEUsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCx1RUFBdUU7SUFDekUsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogaHR0cHM6Ly93d3cudzNyZXNvdXJjZS5jb20vSlNPTi9KU09OUGF0aC13aXRoLUphdmFTY3JpcHQucGhwXG4gKiBAcGFyYW0gb2JqIDogb2JqZWN0fGFycmF5IFRoaXMgcGFyYW1ldGVyIHJlcHJlc2VudHMgdGhlIE9iamVjdCByZXByZXNlbnRpbmcgdGhlIEpTT04gc3RydWN0dXJlLlxuICogQHBhcmFtIHBhdGggOiBzdHJpbmcgVGhpcyBwYXJhbWV0ZXIgcmVwcmVzZW50cyBKU09OUGF0aCBleHByZXNzaW9uIHN0cmluZy5cbiAqIEByZXR1cm4gdW5lIHZhbGV1ciBleHRyYWl0IGRlIGwnb2JqZXQgSnNvbiBvdSB1bmRlZmluZWQgc2kgbGUgcGF0aCBlc3QgZXJyb27DqVxuICovXG5leHBvcnQgZnVuY3Rpb24ganNvblBhdGgyVmFsdWUob2JqOiBhbnksIHBhdGg6IHN0cmluZyk6IGFueSB7XG4gIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIC8vIHZhbHVlIGVzdCBzb2l0IHVuIG9iamV0IEpTT04sIHNvaXQgdW5lIHZhbGV1ciB0ZXJtaW5hbGVcbiAgbGV0IHZhbHVlID0gb2JqO1xuICBjb25zdCBicmVha0V4Y2VwdGlvbiA9IHt9O1xuICB0cnkge1xuICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB0aHJvdyBicmVha0V4Y2VwdGlvbjtcbiAgICAgIC8vIGtleSwgZXg6ICdsYWJlbHNbMjBdJ1xuICAgICAgY29uc3QgbWF0Y2hBcnIgPSBrZXkubWF0Y2goLyhbXlxcW10qKVxcWyhcXGQqKVxcXS8pO1xuICAgICAgY29uc3QgayA9IG1hdGNoQXJyID8gbWF0Y2hBcnJbMV0gOiB1bmRlZmluZWQ7IC8vIGNsw6kgc2FucyBsJ2luZGljZSwgZXggOiAnbGFiZWxzJ1xuICAgICAgY29uc3QgaSA9IG1hdGNoQXJyID8gbWF0Y2hBcnJbMl0gOiB1bmRlZmluZWQ7IC8vIGluZGljZSwgZXggOiAyMFxuICAgICAgdmFsdWUgPSBrICYmIGkgPyB2YWx1ZVtrXVtpXSA6IHZhbHVlW2tleV07XG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBjb25zb2xlLmVycm9yKGBMZSBjaGVtaW4gJyR7cGF0aH0nIG5lIGNvcnJlc3BvbmQgcGFzIMOgIHVuZSB2YWxldXJgKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG4iXX0=