【发布时间】:2013-04-29 22:43:00
【问题描述】:
由于我不明白的原因,我需要解析的来自 web 服务的 JSON 格式数据不在 nme 值对中。 “为简单起见并减少开销”返回的 JSON 似乎是一种适用于 python eval 的格式,但据我所知,不适用于 javascript(警告,我的 javascript 很差,所以我可能是错的 - php 等,很好.js,没那么多!)
所以数据返回为:
[[0, 'OK'],
[['ITEM10314', ['ITEM10397']],
['ITEM10315', ['cornflower']],
['ITEM10397', ['ITEM10315']],
['ITEM10514', ['ITEM10397']],
['ITEM003', []],
['ITEM004', []],
['servertest', ['ITEM004', 'ITEM003']],
['serverroot', []]]]
(如果您有兴趣,这是来自 Nagios LQL 主机查询的 MKLiveStatus 的回复)
第一个数组是状态,随后的数组由 nagios 中监控的主机和该主机的父级(在内部数组中)组成。
很好,不是吗。但是我需要把它变成像样的键/值对,并且必须有一种比为此编写自己的解析器更好的方法(尤其是因为这是一个数据输出,但还有更多类似格式的输出)。
我试图将这一切都保留在本机 js 中,但如果有一个 jQuery 简单的方法,那么我很容易导致懒惰。不用担心旧浏览器,我不在乎,这个项目最终使用了 d3.js,它无论如何都不能在旧浏览器上运行。
有什么建议吗?在这种情况下,深度不会低于这里的深度,因此至少是已知的。但是,我不能把它弄平,我需要知道主机在这之后有哪些父母。
我在这里看到了一些 python-js 链接,但没有在列表中看到任意未知大小的列表。
【问题讨论】:
-
我认为自定义解析器是将其自定义多维数组转换为对象的唯一方法
-
如果它不是 JS 对象表示法,它不是(根据定义)JSON。
-
@rick - 所有 JSON 都是 JS,但并非所有 JS 都是 JSON。显示的代码是有效的 js。
-
你没有反驳我刚才说的话。如果您有一个数组数组,那么它本身就不是有效的 JSON。我没有说 JS 的有效性。
标签: javascript json nagios