【发布时间】:2014-07-28 15:08:15
【问题描述】:
我正在尝试解析写入@http://a0.awsstatic.com/pricing/1/ec2/sles-od.min.js的JSON
这是来自上述链接的快速 sn-p:
{vers:0.01,config:{rate:"perhr",valueColumns:["vCPU","ECU","memoryGiB","storageGB","sles"],currencies:["USD"],regions:[{region:"us-east",instanceTypes:[{type:"generalCurrentGen",sizes:[{size:"t2.micro",vCPU:"1",ECU:"variable",
...
...
...
...
请访问上述链接以查看完整的 JSON。
如上所示,上述 JSON 的 keys 都没有双引号。
这会导致 JSON 字符串格式错误,并且我的 JSON 解析器无法处理它。我还尝试将此 JSON 放入 http://www.jsoneditoronline.org/ 中,但它也失败了。
现在,这是亚马逊用来显示其 EC2 实例的各种价格的同一个链接。所以我想我在这里遗漏了一些东西。我的谷歌搜索让我相信上面的东西不是JSON,而是JSONP..我不明白那是什么。
你能帮我理解如何解析这个 JSON。顺便说一句,我正在使用JSON Module 在perl 做这项工作。
一些背景:
Amazon Web Services 没有以编程方式获取定价信息的 API。因此,我正在解析这些链接,这是亚马逊在显示定价信息here 时所做的事情。此外,我不是编程领域的,我只知道perl。
【问题讨论】:
-
“此文件仅供在 aws.amazon.com 上使用。”您确定没有其他 API 可以满足您的需求吗?
-
不,亚马逊不提供获取价格信息的 API。因此,很多人都做了类似的事情来解析这些链接。但是,它们中的大多数都在 python/ruby 中。我正在尝试使用 perl。
-
@rightfold,检查一下:stackoverflow.com/questions/7334035/… AND stackoverflow.com/questions/3636578/…
-
不是 JSON,
sles-od.min.js包含 JavaScript。 -
是的,它不是 JSON,所以你不能使用 JSON 解析器。你需要一个 JS 解析器。但幸运的是,该程序使用了一小部分可预测的 JS 子集,因此您也不必编写完整的 JS 解析器。 // 尝试添加引号是没有意义的。你需要解析它才能做到这一点。如果你能做到这一点,那么就没有必要解析它了。
标签: perl json perl amazon-web-services