Javascript 解析内部可能有效或无效的字符串 JSON? (从字符串中提取数组)

Javascript parsing a string that might or might not be valid JSON inside? (extracting an array from a string)

我有一个 属性 对象,它始终是一个字符串。但是,该字符串可能只是常规字符,也可能包含字符串化的值数组。

如果它是一个常规字符串,那么我只想传递值,但如果它是一个数组,那么我想以数组形式对其进行一些进一步处理。

我可以使用 JSON.parse(myValue),它非常适合提取数组,但如果它是常规字符串,则会抛出错误。

我也许可以做类似的事情:

let extractedVal = '';

try {
  extractedVal = JSON.parse(myValue)
} catch (e) {
  extractedVal = myValue
}

但这感觉不对,因为 let 变量感觉很乱,try/catch 感觉它没有被正确使用,因为我没有对错误做任何事情等等...... .

是否有更好的方法或建议的最佳实践来实现这一点?

在这种情况下使用try/catch就可以了。不过,我不会为 extractedVal 变量分配初始值,因为您要在两个分支中重新分配它,只需删除 = '' 初始值设定项。

可以稍微改变它:

let extractedVal = value;
try {
    extractedVal = JSON.parse(extractedVal);
    // ...more processing here...
} catch {
    // ...ignore...
}

但坦率地说,我认为您的原作同样清晰,这里有一些调整:

let extractedVal;
try {
    extractedVal = JSON.parse(value);
    // ...more processing here...
} catch {
    extractedVal = value;
}