From 60da53ff718f94880d5a24f9bfd94b38e3f6459d Mon Sep 17 00:00:00 2001 From: nojaf Date: Mon, 24 Nov 2025 13:48:14 +0100 Subject: [PATCH 1/2] Only paste as json when root is object or array --- client/src/commands/paste_as_rescript_json.ts | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/client/src/commands/paste_as_rescript_json.ts b/client/src/commands/paste_as_rescript_json.ts index cf66e4019..419c139a4 100644 --- a/client/src/commands/paste_as_rescript_json.ts +++ b/client/src/commands/paste_as_rescript_json.ts @@ -11,20 +11,7 @@ const isLikelyJson = (text: string): boolean => { return false; } const first = trimmed[0]; - if (first === "{" || first === "[" || first === '"' || first === "-") { - return true; - } - if (first >= "0" && first <= "9") { - return true; - } - if ( - trimmed.startsWith("true") || - trimmed.startsWith("false") || - trimmed.startsWith("null") - ) { - return true; - } - return false; + return first === "{" || first === "["; }; const ensureFloatString = (value: number): string => { @@ -99,6 +86,10 @@ export const convertPlainTextToJsonT = (text: string): JsonConversionResult => { try { const parsed = JSON.parse(text); + // Only convert objects and arrays, not primitive values + if (typeof parsed !== "object" || parsed === null) { + return { kind: "notJson" }; + } return { kind: "success", formatted: formatJsonValue(parsed) }; } catch { return { From 8ccd36caaae58a796996f9205564ce8b2c784441 Mon Sep 17 00:00:00 2001 From: nojaf Date: Mon, 24 Nov 2025 13:49:22 +0100 Subject: [PATCH 2/2] Add changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 049fa9228..538950df9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,12 @@ > - :house: [Internal] > - :nail_care: [Polish] +## [Unreleased] + +#### :bug: Bug fix + +- Only paste objects/arrays are JSON.t https://github.com/rescript-lang/rescript-vscode/pull/1148 + ## 1.68.0 #### :rocket: New Feature