【问题标题】:How do I access these elements of this JSON-encoded javascript?如何访问这个 JSON 编码的 javascript 的这些元素?
【发布时间】:2015-03-30 14:34:17
【问题描述】:

我在 PHP 中有一个数组,我编码为 json:

$jsonOutput = json_encode($output);

然后在我的 javascript 中,我使用它来解析它:

var jsonOutput    = JSON.parse('<?php echo $jsonOutput; ?>');

我的输出在 Chrome 控制台中如下所示:

最终,我有两个数组,我正在尝试编写两者之间的比较,以显示第一个数组中是否有任何项目不在第二个数组中,但我不确定如何引用redorange 在这里。

我尝试了console.log(jsonOutput[0]),但我得到了undefined

另外,作为旁注,是否有人有任何好的资源来阅读 javascript 中的数组及其所有来龙去脉?这似乎是我最近苦苦挣扎的一个方面......

【问题讨论】:

  • 你的 PHP 对象是什么样的?
  • 你不需要用 JS 解析它,因为它已经是 JSON 编码的:var jsonOutput = &lt;?php echo $jsonOutput; ?&gt;; 就足够了。

标签: javascript arrays json


【解决方案1】:

问题是您的 jsonOutput 是一个对象,因此为了访问该对象的一个​​成员,您必须使用 jsonOutput.red/jsonOutput.orange 或 jsonOutput["red"], jsonOutput["orange"] 来访问对象的成员。

更多信息在这里Access / process (nested) objects, arrays or JSON

【讨论】:

  • 这篇链接的文章是一个很好的资源。谢谢!
【解决方案2】:
jsonOutput.red[0]

你有一个有两个键的对象。不是数组。

【讨论】:

  • 如果我事先不知道它们的名字,有没有办法让我访问这些密钥?
【解决方案3】:

您可以使用以下方式访问这些数组:

jsonOutput.red;
jsonOutput.orange;

【讨论】:

  • 问题是,我需要能够将任何名称存储到变量中,以便我可以将它与另一个数组中的值进行比较,(查看 var1 是否包含 @987654323 的项目@ 没有。我需要知道如何访问它...location,因为没有更好的词,而不是直接的实际名称(例如redorange),这就是我尝试的原因使用[0]
  • @JohnWu 你可以使用for (var key in jsonOutput) {
  • 哈哈。我刚刚进入@Nicu Reut 链接的线程中的那部分,它运行良好。谢谢你:)
猜你喜欢
  • 2013-09-29
  • 2012-04-27
  • 1970-01-01
  • 2012-05-10
  • 1970-01-01
  • 2011-11-05
  • 2021-12-03
  • 2016-06-29
  • 1970-01-01
相关资源
最近更新 更多