【问题标题】:JSON get the first index nameJSON获取第一个索引名称
【发布时间】:2013-06-14 10:36:03
【问题描述】:

我正在尝试从我的 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"}}];

所以从这里我需要知道第一个索引是dataerror,这样我就可以继续执行 wil if else 语句..

我尝试参考这个主题Javascript: Getting the first index of an object,但不确定为什么它不起作用,我的数据也有括号和块。

【问题讨论】:

  • 为什么不检查error 的存在呢?比评估它在对象中的物理位置要干净得多...
  • 您需要解析JSON,然后您可以将对象作为标准数组访问stackoverflow.com/questions/4935632/…
  • 你不应该依赖对象属性键定位,因为它们在 ecma 规范中根本没有保证

标签: javascript json


【解决方案1】:

您可以检查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
}

【讨论】:

    【解决方案2】:

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

    以下内容应该可以满足您的需求:

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

    【讨论】:

    • 感谢您指出hasOwnProperty 并与我讨论,它似乎受支持并且在旧浏览器中存在问题,但只有 DOM 元素(不要从对象继承)
    • 没问题,很高兴我能帮上忙。
    【解决方案3】:

    直接查看属性

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

    【讨论】:

    • 如果你得到这个怎么办:[{error: 0}]? - 您将在警报中显示 data,这是错误的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2018-07-28
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    相关资源
    最近更新 更多