perl - 如何从 JSON 数据中提取 URL?

标签 perl json

我有一个文本文档,我想从中提取 URL 并将它们放入一个新的文本文件中。我怎样才能在 Perl 中做到这一点?此处是文本文件的示例:

{"type":"TabGroupsManager:GroupData","id":65,"name":"XML Schema Editor","image":"http://www.altova.com/favicon.ico","disableAutoRename":false,"titleList":"XML Schema Editor\u000aAltova XMLSpy Code Generation\u000aOnline Video Demos\u000aScheduled Data Exchange Case Study\u000aXML Editor\u000aAltova XMLSpy 2011\u000aXML Schema Management Tool\u000a","tabs":["{\"entries\":[{\"url\":\"http://www.altova.com/xmlspy/xml-schema-editor.html\",\"title\":\"XML Schema Editor\",\"ID\":1442422751,\"referrer\":\"http://www.altova.com/xmlspy/xml-editing.html\",\"scroll\":\"0,0\",\"formdata\":{\"#q\":\"\"}}],\"index\":1,\"attributes\":{\"image\":\"http://www.altova.com/favicon.ico\"},\"extData\":{\"TabGroupsManagerGroupId\":\"65\",\"TabGroupsManagerGroupName\":\"XML Schema Editor\"},\"_formDataSaved\":true}","{\"entries\":[{\"url\":\"http://www.altova.com/xmlspy/xml-code-generation.html\",\"title\":\"Altova XMLSpy Code Generation\",\"ID\":1442423118,\"referrer\":\"http://www.google.com/search?hl=en&client=firefox-a&hs=GR1&rls=org.mozilla%3Aen-GB%3Aofficial&q=altova+derive+schema+from+xml&aq=f&aqi=m1&aql=&oq=&gs_rfai=\",\"scroll\":\"0,0\",\"formdata\":{\"#q\":\"\"}}],\"index\":1,\"attributes\":{\"image\":\"http://www.altova.com/favicon.ico\"},\"extData\":{\"TabGroupsManagerGroupId\":\"65\",\"TabGroupsManagerGroupName\":\"XML Schema Editor\"},\"_formDataSaved\":true}","{\"entries\":[{\"url\":\"http://www.altova.com/videos.asp?type=0&video=xmlspy\",\"title\":\"Online Video Demos\",\"ID\":1442423184,\"referrer\":\"http://www.altova.com/xmlspy/xml-code-generation.html\",\"scroll\":\"0,0\",\"formdata\":{\"#q\":\"\"}}],\"index\":1,\"attributes\":{\"image\":\"http://www.altova.com/favicon.ico\"},\"extData\":{\"TabGroupsManagerGroupId\":\"65\",\"TabGroupsManagerGroupName\":\"XML Schema Editor\"},\"_formDataSaved\":true}","{\"entries\":[{\"url\":\"http://www.altova.com/solutions/exchange_ratecasestudy.html\",\"title\":\"Scheduled Data Exchange Case Study\",\"ID\":2618,\"formdata\":{\"#q\":\"\"},\"scroll\":\"0,1369\"}],\"index\":1,\"attributes\":{\"image\":\"http://www.altova.com/favicon.ico\"},\"extData\":{\"TabGroupsManagerGroupId\":\"65\",\"TabGroupsManagerGroupName\":\"XML Schema Editor\"},\"_formDataSaved\":true}","{\"entries\":[{\"url\":\"http://www.altova.com/xml-editor/\",\"title\":\"XML Editor\",\"ID\":2620,\"formdata\":{\"#q\":\"\"},\"scroll\":\"0,0\"}],\"index\":1,\"attributes\":{\"image\":\"http://www.altova.com/favicon.ico\"},\"extData\":{\"TabGroupsManagerGroupId\":\"65\",\"TabGroupsManagerGroupName\":\"XML Schema Editor\"},\"_formDataSaved\":true}","{\"entries\":[{\"url\":\"http://manual.altova.com/XMLSpy/spystandard/index.html?xmlschemasstd.htm\",\"title\":\"Altova XMLSpy 2011\",\"ID\":2622,\"children\":[{\"url\":\"http://manual.altova.com/XMLSpy/spystandard/xmlspy_content_dyn.html\",\"title\":\"Altova XMLSpy 2011\",\"ID\":2623,\"referrer\":\"http://manual.altova.com/XMLSpy/spystandard/index.html?xmlschemasstd.htm\",\"scroll\":\"0,0\"},{\"url\":\"http://manual.altova.com/XMLSpy/spystandard/xmlschemasstd.htm\",\"title\":\"XML Schemas\",\"ID\":2624,\"referrer\":\"http://manual.altova.com/XMLSpy/spystandard/index.html?xmlschemasstd.htm\",\"scroll\":\"0,260\"}],\"scroll\":\"0,0\"}],\"index\":1,\"attributes\":{},\"extData\":{\"TabGroupsManagerGroupId\":\"65\",\"TabGroupsManagerGroupName\":\"XML Schema Editor\"},\"_formDataSaved\":true}","{\"entries\":[{\"url\":\"http://www.altova.com/schemaagent.html\",\"title\":\"XML Schema Management Tool\",\"ID\":2626,\"formdata\":{\"#q\":\"\"},\"scroll\":\"0,171\"}],\"index\":1,\"attributes\":{\"image\":\"http://www.altova.com/favicon.ico\"},\"extData\":{\"TabGroupsManagerGroupId\":\"65\",\"TabGroupsManagerGroupName\":\"XML Schema Editor\"},\"_formDataSaved\":true}"]}

我想从中创建一个文本文件,如:

http://www.altova.com/xmlspy/xml-schema-editor.html
http://www.altova.com/xmlspy/xml-code-generation.html

最佳答案

因为它看起来是一个 JSON 文件而不是纯文本文件,所以使用 JSON modules on CPAN 之一.这有点复杂,因为您似乎将数据编码为 JSON,然后将其作为字符串存储在一个更大的对象中,然后将其转换为 JSON — 因此您必须解析文件,提取字符串,将它们解析为 JSON转向,然后从中提取 URI。

关于perl - 如何从 JSON 数据中提取 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3899719/

相关文章:

perl - 如何在Perl中区分两个文件?

regex - 在 perl 输出中得到一个意想不到的空间

perl - Perl 的 GetOpt::Long 接受开关缩写是错误吗?

perl - 在 Moose 子例程中,$meta 是如何进入 @_ 的?

javascript - 我将如何读取这样的 JSON 结构?

linux - Perl/curl 如何获取状态码和响应体

iOS : display svg from JSON

c# - 使用 ExpandoObject 和 IDictionary 创建 JSON 时允许同一键有多个值

javascript - 使用 XMLHttpRequest 解析 JSON 时返回空值

javascript - 如何将 JSON 数据存储为 JavaScript 表格式?