【发布时间】:2016-05-31 16:09:21
【问题描述】:
我正在尝试从包含存储数据的脚本文本中解析 json。它位于页面 http://www.buildbase.co.uk/storefinder 内。我正在处理的脚本文本是http://pastebin.com/embed_js/3cnewiSh,我的代码如下:
stores_url = "http://www.buildbase.co.uk/storefinder"
mechanize = Mechanize.new
stores_page = mechanize.get(stores_url)
stores_script_txt = stores_page.search("//script[contains(text(), 'storeLocator.initialize(')]")[0].text
stores_jsons = stores_script_txt.split("storeLocator.initialize( $.parseJSON('{\\\"all\\\":")[-1].split(",\\\"selected\\\":0}') ,\tfalse);\n });")[0]
puts stores_jsons
stores_result = JSON.parse(stores_jsons)
JSON.parse 给我的错误是:
from /home/private/.rvm/gems/ruby-2.1.5/gems/json-1.8.3/lib/json/common.rb:155:in `parse'
from /home/private/.rvm/gems/ruby-2.1.5/gems/json-1.8.3/lib/json/common.rb:155:in `parse'
from (irb):240
from /home/private/.rvm/rubies/ruby-2.1.5/bin/irb:11:in `<main>'
我不知道我哪里出错了,因为 JSON 字符串对我来说似乎是有效的。
【问题讨论】:
-
您能否在
stores_result =行之前添加一个简单的puts stores_jsons,以便我们可以看到它试图解析的实际JSON? -
@PaulEllsworth 现在完成了。
-
@PaulEllsworth,嗨,保罗,我在尝试在 stores_jsons 中获取 json 字符串时更正了一个错误。你能看看吗?
-
我认为@PaulEllsworth 的意思是使用
puts语句运行代码,然后将输出复制到您的答案中。 -
@PaulEllsworth 实际上我做不到,因为它会超出问题的字符数限制。
标签: ruby json parsing mechanize string-parsing