读取已解析的 JSON 响应
Reading a parsed JSON response
如何使用jQuery访问此JSON数组?我目前已将数组从 API 处理到以这种格式显示的console.log()
Object {already_liked: false, media_id: "1234567890", likeResult: Object}
already_liked: false
likeResult: Object
data: null
meta: Object
code: 200
__proto__: Object
__proto__: Object
media_id: "1234567890"
__proto__: Object
我从以这种方式格式化的 AJAX 请求中收到此响应
$.get('/likemedia', {
mediaid: $(this).data("id")
}, function(data){
console.log(data.html);
}, 'json');
来自/likemedia
的响应以这种方式格式化
{"html":{"already_liked":false,"media_id":"1234567890","likeResult":{"meta":{"code":200},"data":null}}}
然后,我尝试使用这种格式访问"meta['code']"的 JSON 数组键
data.html.likeResult.meta.code
现在可以使用,我如何获得"data.likeResult.meta.code"的值?
我尝试执行以下操作,结果它将数组扔进console.log
if (data.html.likeResult.meta.code === "200") {
alert("200 META CODE!");
} else {
console.log(data.html);
}
您正在正确访问数据,但您正在对数字与字符串进行严格的比较。那总是false
.严格比较意味着两个值的数据类型也必须匹配。因此,请改为与数字进行比较:
data.html.likeResult.meta.code === 200
相反。
您可以清楚地看到code
是一个数字,因为该值不在双引号中:
{"code":200}
您正在对Number
类型进行类型和值检查,并将其与字符串进行比较。这将始终评估为false
.当你属于这种类型时,我鼓励并大大改进类型和值检查,但在处理 JSON 时,我不会只假设一个类型。相反,我要么写:
if (data.html.likeResult.meta.code == 200)
或选择:
if (+(data.html.likeResult.meta.code) === 200)//explicitly coercing to number
无论如何,在访问那么多嵌套属性之前,我也会检查对象:
if (data.hasOwnProperty('html'))
{
}
避免在访问不存在的属性时出错,这将终止整个脚本。
也许这个函数可以帮助你:
function checkObject(obj, properties)
{
var i, data = obj;
for (i=0;i<properties.length;++i)
{
if (!data.hasOwnProperty(properties[i]))
{
return undefined;
//or throw {'Property: ' + properties[i] + ' not found' , i}
}
data = data[properties[i]];
}
return data;
}
这为 JSON 对象提供了一种更安全的方法,IMO。在您的情况下,您可以像这样调用此函数:
var meta = checkObject(data, ['html','likeResult','meta','code']);
if (!meta)
{//one of the properties wasn't available, deal with that here
}
//all was well, so now:
if (meta.code == 200)
{//...
}
相关文章:
- 在不同的javascript数组中对json响应进行排序
- Laravel数据表无效的JSON响应
- 使用Backbone.js访问JSON响应的部分
- 不需要的JSON响应
- 跨多个域的json响应
- 将对Ajax PUT的json响应重定向到要由EL解析的JSP中
- handler没有为JSON响应正确填充模板
- 如何在phonegap应用程序中处理Ajax json响应
- 将JSON响应放入var中并输出
- 如何使用AngularJS将if语句conditon与json响应一起使用
- JS-通用解析JSON响应
- 将json响应格式化为父级和子级
- 从 JSON 响应解析数据
- 单个和多个 JSON 响应
- 将日期作为从 Web API 到 angularJS 的 json 响应
- 在 JSX Render for React.js 中遍历 JSON 响应
- 使用 JavaScript 从 URL 获取 JSON 响应
- 使用来自AngularJS的Web API JSON响应-错误:应为和数组,但得到了一个对象
- 生成动态json响应的Javascript
- 如何将json响应的一部分转换为map