【问题标题】:Flex 4.5 JSON check for existence of key before exception?Flex 4.5 JSON 在异常之前检查是否存在密钥?
【发布时间】:2012-01-02 16:00:57
【问题描述】:

是否可以在 Flex 4.5 JSON 为未找到密钥引发异常之前检查密钥是否存在?我有一些 json 数据,其中一些键并不总是存在。

我正在使用 CallResponder...

问题在于,当您尝试访问 callResponder.lastResponse.key 时,例如,key 并不总是存在于您的 json 中,Flex 将无法解析它。即使您检查if (callResponder.lastResponse.key),也会发生这种情况 - 在这种情况下,错误发生在 if 行上


(见old error dump here


下面提供的答案适用于键是 JSON 中的顶级节点的情况。但是,它似乎无法解析子键的存在。我没想到在解析顶级节点和子节点之间会有区别,但显然情况就是这样。

为了清楚起见(因为我没有提到我在原始问题中尝试解析子键),我在这里创建了一个新问题,专门询问如何使用以下方法解析子键 -或其他方法,如果需要:Flex 4.5 How do you check for JSON child node key existence (using hasOwnProperty or other methods)

【问题讨论】:

  • 显示引发错误的代码。
  • 我使用了 CallResponder.lastResult (等)。如果您分配bob=callresponse.lastResult.bob,那么当您的 json 调用没有定义 bob 键时,该行将导致错误。有没有办法先检测json中是否存在该键?
  • 你能给我们展示更多的代码吗?例如,那个 sn-p 中的 bob 是什么?
  • bob 只是一个字符串......如果定义了 json 键,它通常总是有效的......
  • 那么也许你应该检查一下json键是否被定义?确保 lastResult 也有一个定义的值。

标签: json apache-flex actionscript flex4 flex4.5


【解决方案1】:

您如何处理您的 JSON 数据?

在我的记忆中,我使用 JSON.decode(String),并得到一个数组。对于每个对象,您可以使用 obj.hasOwnProperty(key) 来检查它是否存在。

【讨论】:

  • 我使用了 CallResponder.lastResult (etc)
  • 您能否给出与 Flex 4.5 中的 CallResponder 对象相关的答案?
  • 问题是使用CallResponder,你应该使用lastResponse来引用事物,而lastResponse没有hasOwnProperty方法。你使用的是Flex 4.5吗?
  • 请注意,我尝试了 callresponder.hasOwnProperty(callresponder.lastResult.location.name) 的变体(其中 JSON 有一个带有名称子级别的位置键),还有 callresponder.hasOwnProperty ("lastResult.location.name"),它们都不起作用。
  • 我不确定它是否会起作用,但你调用 hasOwnProperty 的方式肯定是错误的。 callresponder.lastResult.hasOwnProperty("location")
猜你喜欢
  • 1970-01-01
  • 2013-07-03
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-03
相关资源
最近更新 更多