Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正确地检查对象是否被字符串化?JS_Javascript_Json_Stringify - Fatal编程技术网

Javascript 如何正确地检查对象是否被字符串化?JS

Javascript 如何正确地检查对象是否被字符串化?JS,javascript,json,stringify,Javascript,Json,Stringify,我做了一项研究,奇怪的是,我找不到一种正确的方法来检查一个物体是否有细线 我试图像这样检查并分配它,但不起作用(它通过了验证,只分配了arr_3;): 不确定你的代码有什么问题。如果变量arr是一个新的数组_arr是一个字符串化对象,那么这就是预期的行为 如果您想创建一个返回布尔值的函数,说明特定字符串是否表示字符串化对象,那么请使用try-and-catch 函数isStringified(str){try{return JSON.parse(str);}catch(){return str}

我做了一项研究,奇怪的是,我找不到一种正确的方法来检查一个物体是否有细线

我试图像这样检查并分配它,但不起作用(它通过了验证,只分配了arr_3;):


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

如果您想创建一个返回布尔值的函数,说明特定字符串是否表示字符串化对象,那么请使用try-and-catch


函数isStringified(str){try{return JSON.parse(str);}catch(){return str}}}

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

如果您想创建一个返回布尔值的函数,说明特定字符串是否表示字符串化对象,那么请使用try-and-catch


函数isStringified(str){try{return JSON.parse(str);}catch(){return str}}}

在这种情况下可以使用
typeof
运算符。@teemu如果它是字符串但不是有效的字符串化对象呢?为此,需要try..catch块(请参阅bluejayke的答案),字符串的内容在任何类型检查中都是无意义的。请注意,除了JSON字符串,还有其他字符串化对象,
JSON.parse
只能解析JSON字符串。例如,
JSON.parse({x:1})
失败,尽管字符串包含一个字符串化的有效对象。
typeof
运算符可用于这种情况。@teemu如果它是一个字符串但不是一个有效的字符串化对象怎么办?为此,您需要一个try..catch块(参见bluejayke的答案),字符串的内容在任何类型检查中都是毫无意义的。请注意,除了JSON字符串,还有其他字符串化对象,
JSON.parse
只能解析JSON字符串。例如,
JSON.parse({x:1})
失败,尽管字符串包含字符串化的有效对象。
var arr = arr_ instanceof String ? JSON.parse(arr_) : arr_;