std/json/_common.ts
2024-06-21 14:56:11 +09:00

16 lines
559 B
TypeScript

// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
import type { JsonValue } from "./types.ts";
/** JSON.parse with detailed error message. */
export function parse(text: string): JsonValue {
try {
return JSON.parse(text);
} catch (error) {
// Truncate the string so that it is within 30 lengths.
const truncatedText = 30 < text.length ? `${text.slice(0, 30)}...` : text;
throw new ((error as Error).constructor as ErrorConstructor)(
`${(error as Error).message} (parsing: '${truncatedText}')`,
);
}
}