JavaScript: AI'dan JSON cevap almak
responseMimeType ile temiz JSON iste ve JSON.parse ile nesneye çevir.
Tüm dersler · JavaScript dersleri: sıfırdan öğren
Metin değil, JSON
Sohbet için metin yeter. Test, sözlük ve mağazada soruyu, seçeneği ve doğru cevabı ayrı ayrı almak gerekir. Uzun cümleden bunu çıkarmak zordur. generationConfig içinde responseMimeType: "application/json" AI'yı temiz JSON'a zorlar. "Merhaba, buyurun" yazmaz. generationConfig contents'in içinde değil, onunla aynı seviyededir.
const sorguMelumati = {
contents: [{ parts: [{ text: "2 rəng adı və kodu ver." }] }],
generationConfig: { responseMimeType: "application/json" }
};JSON.parse ve test
Gelen parça hâlâ metindir, nesne değil. JSON.stringify nesneyi göndermek için metne çevirir. JSON.parse metni diziye çevirir. Anahtar adlarını soruda net yaz: sual, variantlar, duzgunCavab. Yazmazsan AI her seferinde başka ad uydurur. Sonra testler[0].sual ve testler[0].duzgunCavab okunur.
const apiKey = process.env.GEMINI_API_KEY;
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${apiKey}`;
async function testYarat(movzu) {
const telimat = `${movzu} mövzusunda 2 sual hazırla. Massiv qaytar. Hər obyektdə sual, variantlar və duzgunCavab olsun.`;
const cavab = await fetch(url, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
contents: [{ parts: [{ text: telimat }] }],
generationConfig: { responseMimeType: "application/json" }
})
});
const melumat = await cavab.json();
const jsonMetni = melumat.candidates[0].content.parts[0].text;
const testler = JSON.parse(jsonMetni);
console.log(testler[0].sual, testler[0].duzgunCavab);
}Sorular
sual neden undefined olur? JSON.parse yazılmamış. jsonMetni hâlâ metindir, dizi değil.
Anahtar neden her seferinde değişir? Soruda adlar yok. sual, variantlar ve duzgunCavab sözcüklerini talimata yaz.
generationConfig nereye düşer? contents'in yanına, içine değil. responseMimeType değeri application/json'dur.
stringify ve parse farkı nedir? stringify gönderir. parse gelen metni nesne yapar.