index.ts
694 Bytes
import { Rule } from '/@/components/Form';
export { default as JSONEditor } from './index.vue';
export const parseStringToJSON = <T = Recordable>(value: string) => {
try {
const json = JSON.parse(value) as T;
return { json, valid: true };
} catch (error) {
return { json: null, valid: false };
}
};
export const JSONEditorValidator = (message = 'json格式校验失败'): Rule[] => {
return [
{
validateTrigger: 'blur',
validator(_rule: Rule, value: any, _callback: Fn) {
const { valid } = parseStringToJSON(value);
if (valid) {
return Promise.resolve();
}
return Promise.reject(message);
},
},
];
};