Problem: Source is not valid JSON with Perplexity and Parse JSON

Hello, sorry, I’m new to Make and I can’t figure out the solutions I’ve seen here and there on the forum, like those proposed by Benjamin.

Basically, I have a very simple scenario for testing purposes:

Notion to Perplexity to Parse JSON to Notion.

The goal is that as soon as I launch the automation, Perplexity retrieves data from the Notion table to search for that data, and then the search should populate the following columns of the same Notion table.

Notion to Perplexity works well.

However, I get the following error on the JSON module: Source is not valid JSON.

And I can’t understand what’s wrong.

Here are the screenshots and the JSON by perplexity to provide you with more information.

```json
[
  {
    "entreprise": "McKinsey",
    "sous-secteur": "Consulting et Stratégie Industrielle",
    "contact": "Pas de contact spécifique identifié",
    "poste": "",
    "email": "",
    "telephone": "",
    "linkedin": "",
    "commentaire": "McKinsey est un cabinet de conseil international qui aide les entreprises à réviser leurs stratégies industrielles face aux mutations récentes. Les enjeux incluent la résilience des chaînes d'approvisionnement, l'adoption de l'Industrie 4.0, et la pression des consommateurs pour des productions locales."
  },
  {
    "entreprise": "SIS International",
    "sous-secteur": "Consulting et Stratégie Industrielle",
    "contact": "Pas de contact spécifique identifié",
    "poste": "",
    "email": "",
    "telephone": "",
    "linkedin": "",
    "commentaire": "SIS International est un cabinet de conseil spécialisé dans les études de marché industrielles. Les enjeux incluent l'analyse des dynamiques de chaîne d'approvisionnement, la compréhension du paysage concurrentiel, et l'identification des opportunités d'innovation."
  },
  {
    "entreprise": "VKSapp",
    "sous-secteur": "Technologies Avancées et Industrie Manufacturière",
    "contact": "Pas de contact spécifique identifié",
    "poste": "",
    "email": "",
    "telephone": "",
    "linkedin": "",
    "commentaire": "VKSapp est une plateforme qui traite des tendances industrielles, notamment l'IA, l'usine intelligente, et le métavers industriel. Les enjeux incluent la cybersécurité, la gestion des données, et l'optimisation de la production."
  },
  {
    "entreprise": "UNIDO",
    "sous-secteur": "Développement Industriel",
    "contact": "Pas de contact spécifique identifié",
    "poste": "",
    "email": "",
    "telephone": "",
    "linkedin": "",
    "commentaire": "UNIDO est une organisation internationale qui publie des rapports sur le développement industriel. Les enjeux incluent l'impact de la COVID-19 sur la production industrielle, la rapidité de la reprise, et la typologie des industries mondiales."
  }
]





If you have a resource, a step-by-step tutorial for this type of automation with Perplexity, I’d really appreciate it.

Thanks!

Hi Laurent, welcome to the community.

You need to extract the JSON before putting it to parse json using text parser match pattern module like this

use this regular expression : {[^{}](?:{[^{}]}[^{}])}
The data you are passing contains ```json at the beginning which can’t be treated as JSON by the parse JSON module

Hello Abhilash_naik,

Thank you for your help. I added a text parser (match pattern) as you suggested and also used the regular expression you provided. I’ve also indicated the source to retrieve in the text field.

However, when I run it, it says:
image

And a second question: for the Parse JSON, I’m currently telling it to retrieve the data from the Perplexity module—should I link it to the text parser instead?

Thanks again!

May be you need a different regex and yes you need to map it to the text parser

Thank you for your response. I tested several Regex expressions (if I’m not mistaken), but they all return an empty result even though there is content…

Here is the Regex I used:

(?<=Content:\s```json\s)(\{[\s\S]*?\})

Any ideas on what could be wrong?

can you share the input and output bundles i will try it from my end

Here is the the input and output bundles by Perplexity :
Input :

[
    {
        "model": "llama-3.1-sonar-small-128k-online",
        "messages": [
            {
                "role": "user",
                "content": "Tu es un expert en analyse de secteur industriel, recherche et récupération d’information sur internet.Ta tâche est de récupérer le secteur d’activité :  et de lancer une recherche sur internet pour renseigner les informations suivantes :Le nom de l’entreprise identifiée. Le sous-secteur adressé par l’entreprise Le nom du contact identifiés Le nom du poste que le contact occupeL’email du contact.Le Téléphone du contact.Le lien de son Linkedin.Un commentaire sur ses enjeux identifiés.Important :Crée autant de ligne que d’entreprise identifiées.Crée autant de ligne que de contact identifiées.Les entreprises que tu dois sélectionnées sont :Les grandes entreprises international.Les grands groupe Français. Les start-upl icorne.Ne prends pas en compte les PME et les entreprises de petite taille qui ne pourraient pas s’offrir les services de consultant en design.Priorise les contacts avec des positions hiérarchique importante ou intermédiaire :- C-Level- Head Of Design- Head of Researcher- Lead Designer.- Directeur Marketing.- Directeur de l’experience utilisateur.Lorsqu’il te manque une données, ne renseigne pas la colonne concernée. Le format de ta réponse est le suivant : JSON parfaitement structuré avec le découpage des données. Important, donne moi uniquement le JSON dans ta réponse. Rien d'autre. "
            }
        ]
    }
]

Output :

[
    {
        "id": "e30ccf42-107c-47c5-9d78-7a248742c6af",
        "model": "llama-3.1-sonar-small-128k-online",
        "created": 1728640067,
        "usage": {
            "prompt_tokens": 320,
            "completion_tokens": 612,
            "total_tokens": 932
        },
        "object": "chat.completion",
        "choices": [
            {
                "index": 0,
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": "```json\n[\n  {\n    \"Nom de l'entreprise\": \"McKinsey & Company\",\n    \"Sous-secteur\": \"Consulting en stratégie industrielle\",\n    \"Nom du contact\": \"Pas de contact spécifique identifié\",\n    \"Nom du poste\": \"Pas de contact spécifique identifié\",\n    \"Email du contact\": \"Pas de contact spécifique identifié\",\n    \"Téléphone du contact\": \"Pas de contact spécifique identifié\",\n    \"Lien de son LinkedIn\": \"Pas de contact spécifique identifié\",\n    \"Commentaire sur ses enjeux identifiés\": \"McKinsey & Company est un leader dans le consulting en stratégie industrielle. Les enjeux identifiés incluent la résilience des chaînes d'approvisionnement, l'adoption de l'Industrie 4.0 et la révision des stratégies industrielles en réponse aux mutations géopolitiques et environnementales.\"\n  },\n  {\n    \"Nom de l'entreprise\": \"SIS International\",\n    \"Sous-secteur\": \"Consulting en stratégie industrielle\",\n    \"Nom du contact\": \"Pas de contact spécifique identifié\",\n    \"Nom du poste\": \"Pas de contact spécifique identifié\",\n    \"Email du contact\": \"Pas de contact spécifique identifié\",\n    \"Téléphone du contact\": \"Pas de contact spécifique identifié\",\n    \"Lien de son LinkedIn\": \"Pas de contact spécifique identifié\",\n    \"Commentaire sur ses enjeux identifiés\": \"SIS International fournit des études de marché industrielles et des conseils en stratégie. Les enjeux incluent l'analyse des dynamiques de chaîne d'approvisionnement, la compréhension du paysage concurrentiel et l'adoption de nouvelles technologies comme l'IoT et l'IA.\"\n  },\n  {\n    \"Nom de l'entreprise\": \"UNIDO (Organisation des Nations Unies pour le développement industriel)\",\n    \"Sous-secteur\": \"Développement industriel\",\n    \"Nom du contact\": \"Pas de contact spécifique identifié\",\n    \"Nom du poste\": \"Pas de contact spécifique identifié\",\n    \"Email du contact\": \"Pas de contact spécifique identifié\",\n    \"Téléphone du contact\": \"Pas de contact spécifique identifié\",\n    \"Lien de son LinkedIn\": \"Pas de contact spécifique identifié\",\n    \"Commentaire sur ses enjeux identifiés\": \"UNIDO se concentre sur le développement industriel et la résilience des entreprises manufacturières. Les enjeux incluent l'adoption de nouvelles technologies numériques, la diversification des secteurs industriels et la promotion d'une prospérité partagée.\"\n  }\n]\n```"
                },
                "delta": {
                    "role": "assistant",
                    "content": ""
                }
            }
        ]
    }
]

And the input and output by TextParser :

Input :


[
    {
        "text": null
    }
]

output :

[
    {}
]

I used this regex : json\n([\s\S]+)\n add the ``` characters

which gave me


from text parser

and from the parse json this

Thank, i tried !

always the same issue…

I used this regex : json\n([\s\S]+)\n with ``` characters
And i had the same result…
Capture d’écran 2024-10-11 à 12.20.08

Sorry, i don’t know what i don’t do well…

Oh, no, it’s fine! The scenario went to bed without any errors, and the last Notion module retrieves the elements correctly. However, my Notion database is not updated…


Input Last Notion :

[
    {
        "page": "11b20b03-77d3-8015-bdb8-f28a637b9683",
        "fields": {},
        "select": "list",
        "database": "8074de95-91f2-45f9-bcce-fc60b5e8f46f"
    }
]

Output :

[
    {
        "object": "page",
        "id": "11b20b03-77d3-8015-bdb8-f28a637b9683",
        "created_time": "2024-10-10T14:45:00.000Z",
        "last_edited_time": "2024-10-10T15:06:00.000Z",
        "created_by": {
            "object": "user",
            "id": "f730958b-6424-4008-b3ee-205bb0c23040"
        },
        "last_edited_by": {
            "object": "user",
            "id": "f730958b-6424-4008-b3ee-205bb0c23040"
        },
        "cover": null,
        "icon": null,
        "parent": {
            "type": "database_id",
            "database_id": "8074de95-91f2-45f9-bcce-fc60b5e8f46f"
        },
        "archived": false,
        "in_trash": false,
        "properties": [
            {
                "id": "%3CLYV",
                "type": "url",
                "url": null,
                "label": "Linkedin"
            },
            {
                "id": "BO%3E%60",
                "type": "number",
                "number": null,
                "label": "Tel"
            },
            {
                "id": "FOJJ",
                "type": "email",
                "email": null,
                "label": "Email"
            },
            {
                "id": "Kym%7B",
                "type": "rich_text",
                "rich_text": [],
                "label": "Nom du contact"
            },
            {
                "id": "Vq%7B%3A",
                "type": "rich_text",
                "rich_text": [],
                "label": "Commentaire"
            },
            {
                "id": "p%3Eu%3C",
                "type": "rich_text",
                "rich_text": [],
                "label": "Secteur d'activité"
            },
            {
                "id": "qwXz",
                "type": "rich_text",
                "rich_text": [],
                "label": "Poste"
            },
            {
                "id": "%7DgLN",
                "type": "rich_text",
                "rich_text": [],
                "label": "Sous secteur"
            },
            {
                "id": "title",
                "type": "title",
                "title": [],
                "label": "Entreprises"
            }
        ],
        "url": "https://www.notion.so/11b20b0377d38015bdb8f28a637b9683",
        "public_url": null,
        "request_id": "05305b09-23ea-48b3-b9bf-c0022865daa5",
        "properties_value": {
            "Linkedin": null,
            "Tel": null,
            "Email": null,
            "Nom du contact": [],
            "Commentaire": [],
            "Secteur d'activité": [],
            "Poste": [],
            "Sous secteur": [],
            "Entreprises": []
        }
    }
]

try with this [\s*[\s\S]+\s*]

Sorry, the Json module works fine, the scenario goes all the way to the end, but I don’t think Notion retrieves the information from the last module.

Hello @Laurent_Chastrusse,
the approach of @abhilash_naik is the easiest way to get it.
Another approach that is harder approach to try using the replace function.

Try this if this works.

Just for your help use this.
{{replace(replace(replace(1.output; "/```json\\n(\[.*?)\\n```/"; "$1"); "\n"; emptystring); "\"""; """")}}

Please make sure you use proper parameters as well as function close parenthesis.
:+1:

Hello Dilipborad, thank you for your message.

Actually, the Text Parser and JSON seem to be working fine. In the JSON input, I can see the data correctly. However, my Notion table is not being updated…

Is it because the mappings aren’t right?

In don’t understand… i have a good JSON output :

[
    {
        "Nom de l'entreprise": "Siemens",
        "Sous-secteur": "Technologies de l'information et de la communication (TIC), Industrie 4.0",
        "Nom du contact": "Roland Busch",
        "Nom du poste": "Président et CEO",
        "Email du contact": "roland.busch@siemens.com",
        "Téléphone du contact": "+49 9131 18-0",
        "Lien de son LinkedIn": "https://www.linkedin.com/in/roland-busch-0a5a4b1a/",
        "Commentaire sur ses enjeux identifiés": "Siemens est un leader dans l'industrie 4.0 et les TIC, avec un accent sur la digitalisation et l'innovation. Ses enjeux incluent la poursuite de l'innovation technologique, la sécurité des données et la résilience des chaînes d'approvisionnement."
    },
    {
        "Nom de l'entreprise": "Airbus",
        "Sous-secteur": "Aéronautique et spatiale",
        "Nom du contact": "Guillaume Faury",
        "Nom du poste": "Président et CEO",
        "Email du contact": "guillaume.faury@airbus.com",
        "Téléphone du contact": "+33 1 60 34 00 00",
        "Lien de son LinkedIn": "https://www.linkedin.com/in/guillaume-faury-9a3b1a1b/",
        "Commentaire sur ses enjeux identifiés": "Airbus est un leader dans l'aéronautique et l'espace, avec des enjeux tels que la sécurité des vols, la durabilité environnementale et la gestion des coûts."
    },
    {
        "Nom de l'entreprise": "LVMH",
        "Sous-secteur": "Mode et luxe",
        "Nom du contact": "Bernard Arnault",
        "Nom du poste": "Chairman et CEO",
        "Email du contact": "bernard.arnault@lvmh.com",
        "Téléphone du contact": "+33 1 40 73 00 00",
        "Lien de son LinkedIn": "https://www.linkedin.com/in/bernard-arnault-0a5a4b1a/",
        "Commentaire sur ses enjeux identifiés": "LVMH est un leader dans le luxe et la mode, avec des enjeux tels que la créativité, la qualité des produits et la gestion des marques."
    },
    {
        "Nom de l'entreprise": "Thales",
        "Sous-secteur": "Technologies de défense et de sécurité",
        "Nom du contact": "Patrice Caine",
        "Nom du poste": "Président et CEO",
        "Email du contact": "patrice.caine@thalesgroup.com",
        "Téléphone du contact": "+33 1 46 84 00 00",
        "Lien de son LinkedIn": "https://www.linkedin.com/in/patrice-caine-0a5a4b1a/",
        "Commentaire sur ses enjeux identifiés": "Thales est un leader dans les technologies de défense et de sécurité, avec des enjeux tels que la sécurité nationale, la cybersécurité et l'innovation technologique."
    },
    {
        "Nom de l'entreprise": "Sanofi",
        "Sous-secteur": "Pharmacie et biotechnologie",
        "Nom du contact": "Thomas Triomphe",
        "Nom du poste": "Directeur Général",
        "Email du contact": "thomas.triomphe@sanofi.com",
        "Téléphone du contact": "+33 1 53 77 40 00",
        "Lien de son LinkedIn": "https://www.linkedin.com/in/thomas-triomphe-0a5a4b1a/",
        "Commentaire sur ses enjeux identifiés": "Sanofi est un leader dans la pharmacie et la biotechnologie, avec des enjeux tels que la recherche médicale, la réglementation sanitaire et la durabilité environnementale."
    },
    {
        "Nom de l'entreprise": "TotalEnergies",
        "Sous-secteur": "Pétrole et énergie",
        "Nom du contact": "Patrick Pouyanné",
        "Nom du poste": "Président et CEO",
        "Email du contact": "patrick.pouyanné@totalenergies.com",
        "Téléphone du contact": "+33 1 47 44 45 00",
        "Lien de son LinkedIn": "https://www.linkedin.com/in/patrick-pouyanné-0a5a4b1a/",
        "Commentaire sur ses enjeux identifiés": "TotalEnergies est un leader dans le secteur pétrolier et énergétique, avec des enjeux tels que la transition énergétique, la durabilité environnementale et la gestion des risques géopolitiques."
    }
]

But in my last Notion i have nothing :

[
    {
        "object": "page",
        "id": "11b20b03-77d3-808c-9fb3-ce13060f910b",
        "created_time": "2024-10-10T07:07:00.000Z",
        "last_edited_time": "2024-10-11T12:30:00.000Z",
        "created_by": {
            "object": "user",
            "id": "f730958b-6424-4008-b3ee-205bb0c23040"
        },
        "last_edited_by": {
            "object": "user",
            "id": "f6b6a6e1-8ff6-4cb2-9c0c-26c5fcebdefe"
        },
        "cover": null,
        "icon": null,
        "parent": {
            "type": "database_id",
            "database_id": "8074de95-91f2-45f9-bcce-fc60b5e8f46f"
        },
        "archived": false,
        "in_trash": false,
        "properties": [
            {
                "id": "%3CLYV",
                "type": "url",
                "url": null,
                "label": "Linkedin"
            },
            {
                "id": "BO%3E%60",
                "type": "number",
                "number": null,
                "label": "Tel"
            },
            {
                "id": "FOJJ",
                "type": "email",
                "email": null,
                "label": "Email"
            },
            {
                "id": "Kym%7B",
                "type": "rich_text",
                "rich_text": [
                    {
                        "type": "text",
                        "text": {
                            "content": "Roland Busch",
                            "link": null
                        },
                        "annotations": {
                            "bold": false,
                            "italic": false,
                            "strikethrough": false,
                            "underline": false,
                            "code": false,
                            "color": "default"
                        },
                        "plain_text": "Roland Busch",
                        "href": null
                    }
                ],
                "label": "Nom du contact"
            },
            {
                "id": "Vq%7B%3A",
                "type": "rich_text",
                "rich_text": [],
                "label": "Commentaire"
            },
            {
                "id": "p%3Eu%3C",
                "type": "rich_text",
                "rich_text": [
                    {
                        "type": "text",
                        "text": {
                            "content": "cosmétique",
                            "link": null
                        },
                        "annotations": {
                            "bold": false,
                            "italic": false,
                            "strikethrough": false,
                            "underline": false,
                            "code": false,
                            "color": "default"
                        },
                        "plain_text": "cosmétique",
                        "href": null
                    }
                ],
                "label": "Secteur d'activité"
            },
            {
                "id": "qwXz",
                "type": "rich_text",
                "rich_text": [],
                "label": "Poste"
            },
            {
                "id": "%7DgLN",
                "type": "rich_text",
                "rich_text": [],
                "label": "Sous secteur"
            },
            {
                "id": "title",
                "type": "title",
                "title": [],
                "label": "Entreprises"
            }
        ],
        "url": "https://www.notion.so/11b20b0377d3808c9fb3ce13060f910b",
        "public_url": null,
        "request_id": "c3e88d84-b855-4a4a-80c3-a8bf8c8eb764",
        "properties_value": {
            "Linkedin": null,
            "Tel": null,
            "Email": null,
            "Nom du contact": [
                {
                    "type": "text",
                    "text": {
                        "content": "Roland Busch",
                        "link": null
                    },
                    "annotations": {
                        "bold": false,
                        "italic": false,
                        "strikethrough": false,
                        "underline": false,
                        "code": false,
                        "color": "default"
                    },
                    "plain_text": "Roland Busch",
                    "href": null
                }
            ],
            "Commentaire": [],
            "Secteur d'activité": [
                {
                    "type": "text",
                    "text": {
                        "content": "cosmétique",
                        "link": null
                    },
                    "annotations": {
                        "bold": false,
                        "italic": false,
                        "strikethrough": false,
                        "underline": false,
                        "code": false,
                        "color": "default"
                    },
                    "plain_text": "cosmétique",
                    "href": null
                }
            ],
            "Poste": [],
            "Sous secteur": [],
            "Entreprises": []
        }
    }
]

And my notion database haven’t some informations… Excepted only one name…

I’m sorry, but I can’t understand…

Perplexity generates responses that are not always consistent, the database is not updated or only partially (only two or three names)…

And I can’t seem to find a notion to perplexity or notion to JSON tutorial… to try and understand.

Hi, does anyone have an idea? I must admit that I am a bit lost.

Hi,

I tried another expression : Entreprise:\s*(.?)\nNom:\s(.?)\nPoste:\s(.?)\nLinkedIn:\s(.?)\nTéléphone:\s(.?)\nEmail:\s(.?)\nCommentaires:\s(.*)

It still doesn’t work. Dilipborad, I didn’t understand your solution.

When I tell it to retrieve everything at once, it’s fine but it only fills the first column of my notion table, and when I try to structure … The text parser returns empty outputs…

In short, if there’s no miracle, someone has an idea for losers like me…
I have to admit it’s particularly frustrating.

Thanks all the same, and good luck if you don’t.