Source

cast.js

import { isJSON } from "./str";

/**
 * @description JSON.parse with try catch
 * @param {any} string
 * @param {object|array|undefined} defaultValue
 * @returns {any}
 */
export function safeJsonParse(string, defaultValue = void 0) {
    if (isJSON(string)) {
        return jsonParse(string);
    } else {
        return defaultValue;
    }
}

/**
 * @description JSON.parse with try catch
 * @param {string} string
 * @param {object|array|undefined} defaultValue
 * @returns {any}
 */
export function jsonParse(string = '', defaultValue) {
    try {
        return JSON.parse(string);
    } catch (e) {
        console.error('jsonParse error', e, string);
        console.error(
            '如果要忽略jsonParse的报错,可以调用saveJsonParse,但最好还是查下为什么报错',
        );
        return defaultValue;
    }
}

/**
 * @description JSON.stringify with try catch
 * @param {object|array} object
 * @param {string|undefined} defaultValue
 * @param extArgs
 * @returns {string|*}
 */
export function jsonStringify(object, defaultValue = void 0, extArgs = {}) {
    let { replacer, space } = extArgs;
    try {
        return JSON.stringify(object, replacer, space);
    } catch (e) {
        console.error('jsonStringify error ', e);
        return defaultValue;
    }
}