json-restructure
Version:
A TypeScript library for repairing malformed JSON strings
35 lines • 1.5 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseJson = void 0;
const types_1 = require("../types");
function parseJson(jsonString) {
try {
return JSON.parse(jsonString);
}
catch (error) {
if (error instanceof SyntaxError) {
const { message, lineNumber, columnNumber } = extractErrorDetails(error, jsonString);
const errorMessage = `JsonParseError: ${message} (line ${lineNumber}, column ${columnNumber})`;
const jsonParseError = new types_1.JsonParseError(errorMessage, lineNumber, columnNumber);
throw jsonParseError;
}
throw error;
}
}
exports.parseJson = parseJson;
function extractErrorDetails(error, jsonString) {
const match = /^Unexpected token (.) in JSON at position (\d+)/.exec(error.message);
if (match) {
const [, unexpectedToken, position] = match;
const lineNumber = jsonString.slice(0, +position).split('\n').length;
const previousLinesLength = jsonString.slice(0, +position).lastIndexOf('\n') + 1;
const columnNumber = +position - previousLinesLength + 1;
return {
message: `Unexpected token '${unexpectedToken}' in JSON at line ${lineNumber}, column ${columnNumber}`,
lineNumber,
columnNumber,
};
}
return { message: error.message, lineNumber: -1, columnNumber: -1 };
}
//# sourceMappingURL=jsonParser.js.map
;