使用Ruby,从JSON响应中的HTML字符串中获取值
我已经尽了我所能,但我似乎没有找到我需要的答案。当然,我可能用词不恰当。我曾尝试使用使用Ruby,从JSON响应中的HTML字符串中获取值,html,ruby-on-rails,json,ruby,string,Html,Ruby On Rails,Json,Ruby,String,我已经尽了我所能,但我似乎没有找到我需要的答案。当然,我可能用词不恰当。我曾尝试使用.find甚至.rindex倒计时,但没有这样的运气。我从JSON接收的值如下所示: "AdditionalData":"<Data><Entry Key=\"utm_campaign\" Value=\"j2c\" /> <Entry Key=\"utm_medium\" Value=\"cpc\" /><Entry Key=\"utm_source\" Value
.find
甚至.rindex
倒计时,但没有这样的运气。我从JSON接收的值如下所示:
"AdditionalData":"<Data><Entry Key=\"utm_campaign\" Value=\"j2c\" />
<Entry Key=\"utm_medium\" Value=\"cpc\" /><Entry Key=\"utm_source\"
Value=\"j2c\" /><Entry Key=\"job_id\" Value=\"300_xxxx_10703\" /></Data>"
“附加数据”:
"
我需要能够抓取键“job_id”的值,因此“300_xxxx_11233”。此值将根据JSON响应返回的每个对象进行更改。任何帮助都将不胜感激,请让我知道这是否已经存在,我只是错过了它。如果每个请求的响应格式保持不变,您可以使用普通的regexp表达式来获取数据,即使不解析JSON。例如:
response = "<Data><Entry Key=\"utm_campaign\" Value=\"j2c\" /><Entry Key=\"utm_medium\" Value=\"cpc\" /><Entry Key=\"utm_source\" Value=\"j2c\" /><Entry Key=\"job_id\" Value=\"300_xxxx_10703\" /></Data>"
match = response.match(%r{job_id\\?"\s+Value=\\?"(.+)\\?"}i)
match[1] if match # => "300_xxxx_10703"
parsed_response = JSON.parse(response)
doc = Nokogiri::HTML(parsed_response['AdditionalData'])
job_id = nil
doc.css('Entry').each do |el|
if el['Key'] == 'job_id'
job_id = el['Value']
break
end
end