如何正确检查对象是不是被字符串化? JS [重复]

Posted

技术标签:

【中文标题】如何正确检查对象是不是被字符串化? JS [重复]【英文标题】:How to properly check if an object is stringified or not? JS [duplicate]如何正确检查对象是否被字符串化? JS [重复] 【发布时间】:2020-11-29 22:30:09 【问题描述】:

我做了一项研究,但很奇怪,我找不到检查对象是否被字符串化的正确方法。

我尝试像这样检查并分配它但不起作用(它通过验证并仅分配 arr_):

var arr = arr_ instanceof String ? JSON.parse(arr_) : arr_;

【问题讨论】:

在这种情况下可以使用 typeof 运算符。 @teemu 如果它是一个字符串但不是一个有效的字符串化对象怎么办? 为此,您需要一个 try..catch 块(请参阅 bluejayke 的回答),字符串的内容在任何类型检查中都是没有意义的。注意,除了 JSON 字符串之外还有字符串化的对象,JSON.parse 只能解析 JSON 字符串。前任。 JSON.parse('x: 1)' 失败,尽管字符串包含一个字符串化的有效对象。 【参考方案1】:

不确定您的代码有什么问题。如果变量 arr 是一个新的 _arr 数组是一个字符串化的对象,那么这就是预期的行为。

如果你想创建一个返回布尔值的函数来说明一个特定的字符串是否代表一个字符串化的对象,那么使用 try 和 catch

function isStringified(str) try return JSON.parse(str); catch() return str

【讨论】:

以上是关于如何正确检查对象是不是被字符串化? JS [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何检查对象数组是不是具有重复的属性值?

如何检查html表是不是在js中重复行并对输入求和而不是插入另一行?

从数组中删除重复的对象

如何在 Perl 中使用 grep 检查字符串是不是存在 [重复]

如何检查数组的至少一项是不是包含在对象数组中并遍历所有对象(JS)

检查类型是不是为 Nullable 的正确方法 [重复]