后端告诉我有几个输入框需要限制输入json,如果使用者输入的内容不是json格式要出现提示
之前没做过这种类型的验证
我一开始想前端能做这种格式的?于是查阅了相关资料,是可以实现的,于是在资料的基础上进行修改,完善最终实现了
先上代码
if (!value) {
callback();
} else if (typeof value == " string " && value != " { " && value != " } ") {
try {
let obj = JSON.parse(value);
if (typeof obj == " object ") {
callback();
} else {
callback(new Error(" 请输入Json格式数据 "));
}
} catch (error) {
callback(new Error(" 请输入Json格式数据 "));
}
} else {
callback(new Error(" 请输入Json格式数据 "));
}
};
解析
因为设定的是非必填,所以如果是值为空,直接跳过
再判断是否是string类型,因为string不一定是json,但是json一定是string,
后来我发现输入 “{”和“}” 也不会报错,于是我把这俩加上去了
之后用json.parse()操作数据
然后再判断是否成功转化成了object,如果没转化成功,说明不是json格式
为什么用try{} catch(){}
JSON.parse() 的参数必须符合 JSON字符串 的格式才可以被正确的转换为对象,否则可能会引起报错,从而对其它的代码造成影响。
说直接点就是后面的代码会停止运行
而try catch的作用就是如果try里面的代码出错了,会跳过直接运行catch的代码