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;
}
我有一个 属性 对象,它始终是一个字符串。但是,该字符串可能只是常规字符,也可能包含字符串化的值数组。
如果它是一个常规字符串,那么我只想传递值,但如果它是一个数组,那么我想以数组形式对其进行一些进一步处理。
我可以使用 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;
}