【前端分享】JS如何判断一个字符串 是 数组或者对象通过JSON.stringfy转换成的字符串!

【前端分享】JS如何判断一个字符串 是 数组或者对象通过JSON.stringfy转换成的字符串! JS 判断字符串是否为 JSON.stringify 转换的数组/对象字符串核心思路尝试用 JSON.parse 解析字符串能正常解析出对象{}或数组[]→ 是JSON.stringify转换的字符串解析报错、或解析结果是原始类型字符串/数字/布尔/null→ 不是1. 完整工具函数直接可用/** * 判断字符串是否是 JSON.stringify 转换的 数组/对象 字符串 * param {string} str - 要判断的字符串 * returns {boolean} 是返回 true否则 false */ functionisJsonStringifyStr(str) { // 1. 先判断是不是字符串非字符串直接返回false if (typeof str ! string) returnfalse; try { // 2. 尝试解析 JSON 字符串 const result JSON.parse(str); // 3. 解析结果必须是 对象 或 数组排除原始类型 const type Object.prototype.toString.call(result); return type [object Object] || type [object Array]; } catch (err) { // 解析失败不是合法 JSON 字符串 returnfalse; } }2. 测试用例验证效果// ✅ 是 JSON.stringify 转换的字符串 console.log(isJsonStringifyStr({name:张三})); // true对象 console.log(isJsonStringifyStr([1,2,3])); // true数组 console.log(isJsonStringifyStr([{a:1},{b:2}])); // true对象数组 // ❌ 不是 console.log(isJsonStringifyStr(hello)); // false普通字符串 console.log(isJsonStringifyStr(123)); // false数字字符串 console.log(isJsonStringifyStr(true)); // false布尔字符串 console.log(isJsonStringifyStr(null)); // falsenull字符串 console.log(isJsonStringifyStr({a:1})); // false非法JSON console.log(isJsonStringifyStr(123)); // false非字符串3. 关键知识点说明为什么用Object.prototype.toString.call比typeof更精准typeof null→object误判Object.prototype.toString.call(null)→[object Null]精准边界情况覆盖空对象{}、空数组[]→ 返回true非法 JSON缺少引号、语法错误→ 捕获异常返回false非字符串类型数字/布尔/对象→ 直接返回false核心逻辑只有合法的 JSON 格式字符串且解析后是对象/数组才判定为JSON.stringify转换的字符串。3.1. 总结用JSON.parse尝试解析捕获解析异常解析成功后判断结果是否为对象/数组工具函数可直接复制使用覆盖所有常见场景·······END·······喜欢的话可以点个赞关注博主哦