{"id":17420,"date":"2024-06-14T17:08:45","date_gmt":"2024-06-14T17:08:45","guid":{"rendered":"https:\/\/www.directimpactsolutions.com\/enregistrements-filemaker-portables-a-laide-de-json\/"},"modified":"2025-05-01T04:39:45","modified_gmt":"2025-05-01T04:39:45","slug":"enregistrements-filemaker-portables-a-laide-de-json","status":"publish","type":"post","link":"https:\/\/www.directimpactsolutions.com\/fr\/enregistrements-filemaker-portables-a-laide-de-json\/","title":{"rendered":"Enregistrements FileMaker portables \u00e0 l&rsquo;aide de JSON"},"content":{"rendered":"<h2 class=\"wp-block-heading has-medium-font-size\" id=\"How-to-pack-up-an-entire-FileMaker-record-into-a-JSON-object-using-a-simple-modular-script\">Comment transformer un enregistrement FileMaker complet en un objet JSON \u00e0 l&rsquo;aide d&rsquo;un simple script modulaire<\/h2><p>Dans le d\u00e9veloppement FileMaker, comme dans tout environnement de d\u00e9veloppement, nous avons beaucoup d&rsquo;astuces et de techniques que nous utilisons pour faire avancer les choses &#8211; des plus simples (comme <a href=\"https:\/\/www.youtube.com\/watch?v=dX4XMhYR7gs\" target=\"_blank\" rel=\"noreferrer noopener\">supprimer automatiquement le formatage du texte<\/a> dans un champ) aux plus avanc\u00e9es (utiliser des transactions de type \u00ab\u00a0<a href=\"https:\/\/www.proofgeist.com\/blog\/2019\/05\/13\/filemaker-transactions-without-portals\/\" target=\"_blank\" rel=\"noreferrer noopener\">cl\u00e9 magique<\/a>\u00ab\u00a0). Dans mon travail de d\u00e9veloppement, j&rsquo;ai souvent besoin de d\u00e9placer des donn\u00e9es d&rsquo;un endroit \u00e0 un autre, et j&rsquo;ai d\u00e9couvert que JSON est devenu mon format de pr\u00e9dilection pour accomplir cette t\u00e2che, en particulier parce qu&rsquo;il est bien adapt\u00e9 \u00e0 ce cas d&rsquo;utilisation pr\u00e9cis : stocker et d\u00e9placer des donn\u00e9es structur\u00e9es. Si vous n&rsquo;\u00eates pas familier avec l&rsquo;utilisation de JSON dans FileMaker, je vous invite \u00e0 lire mon guide <a href=\"https:\/\/www.directimpactsolutions.com\/en\/guide-to-building-a-json-object\/\">\u00e9tape par \u00e9tape sur la cr\u00e9ation de JSON dans FileMaker<\/a> (en anglais).<\/p><p>Il y a quelques ann\u00e9es, un de mes coll\u00e8gues a cr\u00e9\u00e9 un script rapide et facile pour transformer un enregistrement FileMaker complet en un objet JSON (que j&rsquo;ai depuis adapt\u00e9 et optimis\u00e9), et je me suis retrouv\u00e9 \u00e0 utiliser sa technique encore et encore. Elle est particuli\u00e8rement utile pour analyser les donn\u00e9es d&rsquo;une source de donn\u00e9es texte dans plusieurs tables, mais je l&rsquo;ai \u00e9galement utilis\u00e9e pour un enregistrement complet, ajouter des m\u00e9tadonn\u00e9es, coder le tout au format Base64 et l&rsquo;envoyer sur Internet \u00e0 un autre serveur \u00e0 l&rsquo;aide du Data API.<\/p><p>Le principe de base est le suivant : \u00e0 l&rsquo;aide d&rsquo;une liste de noms de champs de ta table, il suffit d\u2019extraire la valeur d&rsquo;un enregistrement de chaque rubrique de la liste et de l\u2019ajouter en tant qu&rsquo;\u00e9l\u00e9ment \u00e0 un objet JSON. \u00c0 la fin de ce processus, une liste de tous les champs de la table et de leurs valeurs se retrouvent bien rang\u00e9s dans un seul objet JSON !<\/p><p>Voici l&rsquo;int\u00e9gralit\u00e9 du script :<\/p><figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"921\" height=\"798\" src=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-script.png\" alt=\"\" class=\"wp-image-17027\" style=\"width:800px\" srcset=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-script.png 921w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-script-300x260.png 300w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-script-768x665.png 768w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-script-600x520.png 600w\" sizes=\"auto, (max-width: 921px) 100vw, 921px\" \/><\/figure><p>Cette technique exploite la fonction ExecuteSQL et les <a href=\"https:\/\/help.claris.com\/en\/sql-reference\/content\/filemaker-system-tables.html\" target=\"_blank\" rel=\"noreferrer noopener\">tables syst\u00e8me FileMaker<\/a> pour obtenir une liste des rubriques de la table. Nous commen\u00e7ons par obtenir le nom de la table et la liste des rubriques de cette table :<\/p><figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"882\" height=\"68\" src=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-script-2.png\" alt=\"\" class=\"wp-image-17030\" style=\"width:800px\" srcset=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-script-2.png 882w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-script-2-300x23.png 300w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-script-2-768x59.png 768w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-script-2-600x46.png 600w\" sizes=\"auto, (max-width: 882px) 100vw, 882px\" \/><\/figure><p>Il en r\u00e9sulte deux variables, appel\u00e9es $table et $fieldList, qui ressembleront \u00e0 ceci :<\/p><div class=\"wp-block-uagb-container uagb-block-2f22b98e alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\"><div class=\"wp-block-uagb-container uagb-block-8430a301\"><figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"441\" height=\"309\" src=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/Current-Value-1.png\" alt=\"\" class=\"wp-image-17033\" style=\"width:400px\" srcset=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/Current-Value-1.png 441w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/Current-Value-1-300x210.png 300w\" sizes=\"auto, (max-width: 441px) 100vw, 441px\" \/><\/figure><\/div>\n\n<div class=\"wp-block-uagb-container uagb-block-2d25950c\"><figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"465\" height=\"431\" src=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/Current-Value-2.png\" alt=\"\" class=\"wp-image-17036\" style=\"width:400px\" srcset=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/Current-Value-2.png 465w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/Current-Value-2-300x278.png 300w\" sizes=\"auto, (max-width: 465px) 100vw, 465px\" \/><\/figure><\/div><\/div><\/div><p>Nous comptons ensuite le nombre de rubriques de notre table et nous nous pr\u00e9parons \u00e0 parcourir en boucle la liste des rubriques :<\/p><figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"891\" height=\"68\" src=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-Script-3.png\" alt=\"\" class=\"wp-image-17039\" style=\"width:800px\" srcset=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-Script-3.png 891w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-Script-3-300x23.png 300w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-Script-3-768x59.png 768w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-Script-3-600x46.png 600w\" sizes=\"auto, (max-width: 891px) 100vw, 891px\" \/><\/figure><p>Dans l&rsquo;\u00e9tape suivante, nous parcourons en boucle chacun des noms de champs de $fieldlist, utilisons la fonction GetField() pour obtenir le contenu de ce rubrique de cette table, et l&rsquo;ajoutons en tant qu&rsquo;\u00e9l\u00e9ment \u00e0 un objet JSON appel\u00e9 $record :<\/p><figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"771\" height=\"179\" src=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-Script-4.png\" alt=\"\" class=\"wp-image-17042\" style=\"width:800px\" srcset=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-Script-4.png 771w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-Script-4-300x70.png 300w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-Script-4-768x178.png 768w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-Script-4-600x139.png 600w\" sizes=\"auto, (max-width: 771px) 100vw, 771px\" \/><\/figure><p>\u00c0 la fin de cette boucle, nous obtenons une variable appel\u00e9e $record qui ressemble \u00e0 ceci :<\/p><pre class=\"wp-block-code\"><code>{\"BirthCountry\":\"USA\",\"DOB\":\"8\/11\/1954\",\"Email\":\"marcus@odiorne.com\",\"First\":\"Marcus\",\"Language\":\"\",\"Last\":\"Aurelius\",\"Middle\":\"K\",\"PersonID\":\"109992\",\"Race\":\"White\",\"SexAtBirth\":\"M\",\"cAge\":\"66\"}<\/code><\/pre><p>Nous pouvons la reformater \u00e0 l&rsquo;aide de la fonction JSONFormatElements() pour qu&rsquo;elle ait un meilleur aspect :<\/p><pre class=\"wp-block-code\"><code>{\n\t\"BirthCountry\" : \"United States\",\n\t\"DOB\" : \"8\/11\/1954\",\n\t\"Email\" : \"marcus@odiorne.com\",\n\t\"First\" : \"Marcus\",\n\t\"Language\" : \"\",\n\t\"Last\" : \"Odiorne\",\n\t\"Middle\" : \"K\",\n\t\"PersonID\" : \"109992\",\n\t\"Race\" : \"White\",\n\t\"SexAtBirth\" : \"M\",\n\t\"cAge\" : \"66\"\n}<\/code><\/pre><p>\u00c0 la fin du script, nous pouvons ajouter des m\u00e9tadonn\u00e9es \u00e0 ce bloc JSON, si nous le souhaitons, mais cela est totalement facultatif. Nous pourrions envisager des choses comme celles-ci :<\/p><pre class=\"wp-block-code\"><code>{\t\n    \"Record\" : \t\n    {\n        \"BirthCountry\" : \"United States\",\n  \t\t\"DOB\" : \"8\/11\/1954\",\n  \t\t\"Email\" : \"marcus@odiorne.com\",\n  \t\t\"First\" : \"Marcus\",\n  \t\t\"Language\" : \"\",\n  \t\t\"Last\" : \"Odiorne\",\n  \t\t\"Middle\" : \"K\",\n  \t\t\"PersonID\" : \"109992\",\n  \t\t\"Race\" : \"White\",\n  \t\t\"SexAtBirth\" : \"M\",\n  \t\t\"cAge\" : \"66\"\t\n    },\n    \"metaData\" :\n    {\n\t\t\"Account Name\" : \"Admin\",\n\t\t\"DeviceID\" : \"C56C3D9278D302299180B26B584EEE\",\n\t\t\"Host IP\" : \"\",\n\t\t\"PrivSet\" : \"&#91;Full Access]\",\n\t\t\"ScreenSize\" : \"2560x1440\",\n\t\t\"System IP\" : \"192.168.0.7\",\n\t\t\"SystemVer\" : \"14.4.1\",\n\t\t\"Time\" : \"4\/12\/2024 1:58:27 PM\"\t\n\t}\n}<\/code><\/pre><p>Dans la derni\u00e8re \u00e9tape du script, il y a une \u00e9tape de fin de script, qui renvoie le r\u00e9sultat JSON :<\/p><pre class=\"wp-block-code\"><code>Exit Script &#91; Text Result: $result ]<\/code><\/pre><p>Cette \u00e9tape renvoie le JSON au script parent, qu\u2019il est possible d\u2019obtenir en appelant la fonction Get ( ScriptResult ) :<\/p><pre class=\"wp-block-code\"><code>Set Variable &#91; $record ; Value: Get ( ScriptResult ) ]<\/code><\/pre><p>C&rsquo;est tout !<\/p><p>Une fois que l&rsquo;enregistrement est r\u00e9cup\u00e9r\u00e9 de cette fa\u00e7on, vous pouvez en extraire des \u00e9l\u00e9ments individuels en utilisant les fonctions JSON int\u00e9gr\u00e9es de FileMaker. Par exemple, si vous voulez acc\u00e9der \u00e0 une nouvelle table, cr\u00e9er un enregistrement et d\u00e9finir certaines rubriques de ce nouvel enregistrement en fonction des \u00e9l\u00e9ments de l&rsquo;exemple $record ci-dessus, vous ferez quelque chose comme ceci :<\/p><figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"776\" height=\"117\" src=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-Script-5.png\" alt=\"\" class=\"wp-image-17045\" style=\"object-fit:cover\" srcset=\"https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-Script-5.png 776w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-Script-5-300x45.png 300w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-Script-5-768x116.png 768w, https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/JSON-Script-5-600x90.png 600w\" sizes=\"auto, (max-width: 776px) 100vw, 776px\" \/><\/figure><p>Il est important de noter ici que les donn\u00e9es de la variable JSON sont toutes captur\u00e9es au format \u00ab\u00a0Cha\u00eene\u00a0\u00bb, ce qui signifie que les types de donn\u00e9es ne sont pas reconnus comme Nombre, Date, Bool\u00e9en, etc. Bien que cela soit avantageux d&rsquo;un certain point de vue &#8211; FileMaker n&rsquo;essaie pas de reformater quoi que ce soit &#8211; lors de l&rsquo;analyse des donn\u00e9es, il se peut que vous deviez convertir les \u00e9l\u00e9ments au type de donn\u00e9es dont vous avez besoin, en particulier si vous envoyez des donn\u00e9es dans un syst\u00e8me diff\u00e9rent. Par exemple, vous pouvez extraire une date de votre enregistrement sous la forme d&rsquo;une cha\u00eene de caract\u00e8res comme celle-ci : \u00ab\u00a04\/26\/01\u00a0\u00bb. Lorsque vous l\u2019introduirez dans un autre syst\u00e8me, vous devrez peut-\u00eatre utiliser une fonction FileMaker comme GetAsDate() pour la transformer en une v\u00e9ritable Date ou la reformater au format ISO (comme &lsquo;2024-04-26&rsquo;). De m\u00eame, la refonte du type de donn\u00e9es analys\u00e9es \u00e0 l&rsquo;aide de GetAsBoolean() ou GetAsNumber() peut s&rsquo;av\u00e9rer n\u00e9cessaire.<\/p><p>Remarque que le d\u00e9but du script comporte une \u00e9tape qui v\u00e9rifie si une variable globale appel\u00e9e $table est la m\u00eame que le nom de la table actuelle :<\/p><pre class=\"wp-block-code\"><code>If &#91; $$table \u2260 Get ( LayoutTableName ) ]<\/code><\/pre><p>C&rsquo;est simplement pour gagner du temps si vous appellez ce script \u00e0 l&rsquo;int\u00e9rieur d&rsquo;une boucle. L&rsquo;ex\u00e9cution de la fonction ExecuteSQL sur les tables syst\u00e8me FileMaker peut \u00eatre assez lente ; la g\u00e9n\u00e9ration de la liste des rubriques peut prendre jusqu&rsquo;\u00e0 une demi-seconde. Bien que cela ne pose g\u00e9n\u00e9ralement pas de probl\u00e8me lors d&rsquo;un seul appel de script, cela ralentit consid\u00e9rablement le processus lors de l&rsquo;ex\u00e9cution r\u00e9p\u00e9t\u00e9e d&rsquo;une boucle d&rsquo;enregistrements. \u00c9tant donn\u00e9 qu&rsquo;un processus en boucle est g\u00e9n\u00e9ralement ex\u00e9cut\u00e9 dans le m\u00eame contexte \u00e0 plusieurs reprises, il n&rsquo;est pas n\u00e9cessaire d&rsquo;obtenir la m\u00eame liste de champs pour chaque boucle, nous commen\u00e7ons donc par d\u00e9finir le nom de la table sur laquelle nous nous trouvons dans la variable globale $table. Si le contexte du script est le m\u00eame pour chaque boucle, nous pouvons r\u00e9utiliser la $fieldList existante pour la boucle suivante !<\/p><p>Cette technique s&rsquo;est av\u00e9r\u00e9e si utile dans mon d\u00e9veloppement FileMaker que j&rsquo;y reviens encore et encore. J&rsquo;esp\u00e8re que vous pourrez trouver un cas d&rsquo;utilisation dans votre propre travail. Joyeuse transformation de donn\u00e9es !<\/p>","protected":false},"excerpt":{"rendered":"<p>Comment transformer un enregistrement FileMaker complet en un objet JSON \u00e0 l&rsquo;aide d&rsquo;un simple script modulaire Dans le d\u00e9veloppement FileMaker, comme dans tout environnement de d\u00e9veloppement, nous avons beaucoup d&rsquo;astuces et de techniques que nous utilisons pour faire avancer les choses &#8211; des plus simples (comme supprimer automatiquement le formatage du texte dans un champ) &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.directimpactsolutions.com\/fr\/enregistrements-filemaker-portables-a-laide-de-json\/\"> <span class=\"screen-reader-text\">Enregistrements FileMaker portables \u00e0 l&rsquo;aide de JSON<\/span> Lire la suite >><\/a><\/p>\n","protected":false},"author":23,"featured_media":17049,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"","footnotes":""},"categories":[34],"tags":[321,322],"class_list":["post-17420","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-low-code","tag-json-fr","tag-objet-json"],"uagb_featured_image_src":{"full":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/iStock-1456089042-scaled.jpg",2560,1600,false],"thumbnail":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/iStock-1456089042-150x150.jpg",150,150,true],"medium":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/iStock-1456089042-300x188.jpg",300,188,true],"medium_large":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/iStock-1456089042-768x480.jpg",768,480,true],"large":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/iStock-1456089042-1024x640.jpg",1024,640,true],"1536x1536":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/iStock-1456089042-1536x960.jpg",1536,960,true],"2048x2048":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/iStock-1456089042-2048x1280.jpg",2048,1280,true],"woocommerce_thumbnail":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/iStock-1456089042-300x300.jpg",300,300,true],"woocommerce_single":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/iStock-1456089042-600x375.jpg",600,375,true],"woocommerce_gallery_thumbnail":["https:\/\/www.directimpactsolutions.com\/wp-content\/uploads\/2024\/04\/iStock-1456089042-100x100.jpg",100,100,true]},"uagb_author_info":{"display_name":"David Weiner","author_link":"https:\/\/www.directimpactsolutions.com\/fr\/author\/david-weiner\/"},"uagb_comment_info":0,"uagb_excerpt":"Comment transformer un enregistrement FileMaker complet en un objet JSON \u00e0 l&rsquo;aide d&rsquo;un simple script modulaire Dans le d\u00e9veloppement FileMaker, comme dans tout environnement de d\u00e9veloppement, nous avons beaucoup d&rsquo;astuces et de techniques que nous utilisons pour faire avancer les choses &#8211; des plus simples (comme supprimer automatiquement le formatage du texte dans un champ)\u2026","_links":{"self":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts\/17420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/comments?post=17420"}],"version-history":[{"count":3,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts\/17420\/revisions"}],"predecessor-version":[{"id":21085,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/posts\/17420\/revisions\/21085"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/media\/17049"}],"wp:attachment":[{"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/media?parent=17420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/categories?post=17420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.directimpactsolutions.com\/fr\/wp-json\/wp\/v2\/tags?post=17420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}