判断数据类型是否是json

1,121 阅读1分钟

image.png

后端告诉我有几个输入框需要限制输入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的代码