Search Groundingを有効にすると responseMimeType が使えず、JSONが途中で切れることが増えました。midori301では括弧数とトレイリングカンマを補修しつつ、最悪でも正規表現で座標を救出します。
{
"places": [
{
"name": "東京タワー",
"latitude": 35.6586,
"longitude": 139.7454,
}
]
}
{
"places": [
{
"name": "東京タワー",
"latitude": 35.6586,
"longitude": 139.7454
}
]
}
// cleanupJSON は括弧の欠損と ```json コードブロックを補修
function cleanupJSON(text) {
let normalized = text.replace(/,\s*([\]}])/g, '$1');
const missingBrackets = (normalized.match(/\[/g) || []).length - (normalized.match(/\]/g) || []).length;
if (missingBrackets > 0) normalized += ']'.repeat(missingBrackets);
const missingBraces = (normalized.match(/\{/g) || []).length - (normalized.match(/\}/g) || []).length;
if (missingBraces > 0) normalized += '}'.repeat(missingBraces);
return normalized.replace(/```json|```/g, '').trim();
}