【发布时间】:2019-04-01 14:41:03
【问题描述】:
我在 chrome network-> 预览窗口中有以下结构如下的对象:
n_days_orders:
index: ["Sun, 21 Oct 2018", "Mon, ...
last_n: 7
quantity: [0, 0, 0, 0, 0, 0, 0]
我正在使用以下内容来检查是否是 JSON 对象,如果是则解析它。
How can I check if a value is a json object?之后
function isJSON (something) {
if (typeof something !== 'string') {
something = JSON.stringify(something)
}
try {
JSON.parse(something)
return true
} catch (e) {
return false
}
}
if (isJSON(data.n_days_orders)) {
try {
daysOrders = JSON.parse(data.n_days_orders)
} catch (e) {
console.log(e.message)
//the line below is printed
>>Unexpected token o in JSON at position 1
}
}
如何在不抛出错误的情况下获取对象中的值?
【问题讨论】:
-
有什么问题?你没有说你到底在追求什么,为什么现在的方式不适合你
-
你需要先解析
data。在将字符串转换为对象之前,字符串不会具有n_days_orders之类的属性 -
该错误通常意味着数据已经是一个对象,而不是JSON字符串,因此无需对其调用
JSON.parse。 -
There is no such thing as a "JSON Object"。
isJSON({})计算结果为 true,但{}根本不是 JSON。 -
(记住 JSON 是一个 string 可以转换成一个对象;它不是对象本身。假设您通过 jQuery AJAX 请求获取此数据,它是可能在此代码运行之前已经为您完成了转换;它会根据响应 MIME 类型或调用中声明的 dataType 自动执行此操作。)
标签: javascript json