Этот код JSON.parse(1234)
или JSON.parse(0)
или JSON.parse(false)
или JSON.parse(null)
все вернет true.
function isJson(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
Итак, я переписал код таким образом:
function isJson(item) {
item = typeof item !== "string"
? JSON.stringify(item)
: item;
try {
item = JSON.parse(item);
} catch (e) {
return false;
}
if (typeof item === "object" && item !== null) {
return true;
}
return false;
}
Результат тестирования: