Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON获取第一个索引名_Javascript_Json - Fatal编程技术网

Javascript JSON获取第一个索引名

Javascript JSON获取第一个索引名,javascript,json,Javascript,Json,我试图从JSON对象中检测第一个索引名,这些数据来自API 如果成功数据将返回如下内容: var setRecharge = [{"data":{"transaction_id":"502014","tr_time":"2013-06-18 15:34:46","tr_channel":"WEB","opening_balance_a":"1000.00","closing_balance_a":"990.00"}}]; 如果失败,它将返回: var setRecharge = [{"erro

我试图从JSON对象中检测第一个索引名,这些数据来自API

如果成功数据将返回如下内容:

var setRecharge = [{"data":{"transaction_id":"502014","tr_time":"2013-06-18 15:34:46","tr_channel":"WEB","opening_balance_a":"1000.00","closing_balance_a":"990.00"}}];
如果失败,它将返回:

var setRecharge = [{"error":{"code":"AccountA","message":"Problem with A account: Password is not correct"}}];
因此,从这里我需要知道第一个索引是
data
error
,这样我就可以继续wil if else语句了


我试图引用这个主题,但不确定为什么它不起作用,我的数据也有括号和块

直接检查属性

if(setRecharge[0].error!=null)//stuff for error
else //stuff for data

您可以检查是否存在
error
,而不是检查元素的名称:

if(setRecharge[0].hasOwnProperty("error")) {
    //you have an error - deal with it
}
else if(setRecharge[0].hasOwnProperty("data")) {
    //you have your data - deal with it
}
else {
    //something went wrong - you got neither
}

我建议只检查对象是否有
error
属性,然后处理它。这是一个比检查第一个属性的名称更干净的解决方案。如果属性的顺序发生变化怎么办

以下内容应满足您的需要:

if(setRechargeRate[0].hasOwnProperty('error'))
{
    // Handle the error here...
}

为什么不检查是否存在
错误
?比评估它在对象中的物理位置要干净得多……您需要解析JSON,然后您可以作为标准数组访问对象。您永远不应该依赖对象属性键定位,因为它们在ecma规范中根本不受保证。如果您得到以下信息:
[{error:0}]
?-您将在警报中显示数据,这是错误的。感谢您指出
hasOwnProperty
并与我讨论,它似乎受支持,并且在旧浏览器中存在问题,但只有DOM元素(不从对象继承)没有问题,很高兴我能提供帮助。