Hi I’m working with chatgpt asking it to send me a JSON answer with various keys and values, trying to get a very precize output.
Most of the time, the below code allows me to parse the JSON properly, but too often (20-30%) it doesn’t send me an understandable format.
I would like to
1 - know if there is any other solution to properly or automaticaly parse the JSON from chatgpt (random output even if prompt is clear) like on other softwares (make, pabbly, zapier…)
2 - know there is anyway to improve my code or if any has one with 95+% success at least
3 - any other idea or solutions
Thanks.
export const code = async (inputs) => {
let jsonText = inputs.textjson;
console.log(jsonText);
// Nettoyer la syntaxe avant et après les crochets d'entrée et de sortie
jsonText = jsonText.trim(); // Supprime les espaces au début et à la fin
jsonText = jsonText.replace(/^[^\[\{]+|[^\]\}]+$/g, ''); // Supprime les caractères non JSON au début et à la fin
// Remplacer les caractères problématiques
jsonText = jsonText.replace(/\\n/g, ''); // Supprime les retours à la ligne échappés
jsonText = jsonText.replace(/\\r/g, ''); // Supprime les retours chariot échappés
jsonText = jsonText.replace(/\s+/g, ' '); // Remplace les espaces multiples par un seul espace
jsonText = jsonText.replace(/\\"/g, '"'); // Remplace les guillemets échappés par des guillemets normaux
// Ajouter des crochets si le texte n'en a pas
if (!jsonText.startsWith('[')) {
jsonText = '[' + jsonText;
}
if (!jsonText.endsWith(']')) {
jsonText = jsonText + ']';
}
try {
// Parse le texte JSON
const jsonArray = JSON.parse(jsonText);
// Initialiser un objet vide pour contenir les données consolidées
const consolidatedObject = {};
// Itérer à travers chaque objet dans le tableau et combiner les clés et valeurs
jsonArray.forEach(item => {
Object.keys(item).forEach(key => {
consolidatedObject[key] = item[key];
});
});
// Retourner le tableau avec un seul objet consolidé
return [consolidatedObject];
} catch (error) {
console.error("Erreur lors du parsing du JSON :", error);
throw new Error("Le texte JSON fourni est mal formé.");
}
};