将html响应转换为json

时间:2015-12-01 19:43:14

标签: ruby-on-rails ruby json

我正在尝试在rails中实现SMS API,当我点击API网址时,我得到以下html响应:

<!DOCTYPE RESULT SYSTEM "http: api_link ">
<html><body>
<result reqid="57469">
    <mid submitdate="2015-12-02 00:51:55" id="1" tag="null" tid="103335">

    </mid>
</result>
</body></html>

如何将此转换为json

2 个答案:

答案 0 :(得分:2)

不幸的是,此时你无法直接将html转换为json,但你可以将html转换为哈希,然后将哈希转换为json。

YOUR_HTML_CODE = '<!DOCTYPE RESULT SYSTEM "http: api_link "><html><body> <result reqid="57469"> <mid submitdate="2015-12-02 00:51:55" id="1" tag="null" tid="103335"> </mid></result></body></html>'

@data = Hash.from_xml(YOUR_HTML_CODE).to_json

返回:

=> "{\"html\":{\"body\":{\"result\":{\"reqid\":\"57469\",\"mid\":{\"submitdate\":\"2015-12-02 00:51:55\",\"id\":\"1\",\"tag\":\"null\",\"tid\":\"103335\",\"__content__\":\"\\n\\n    \"}}}}}"

要找到更多方法来执行您想要的操作,请搜索rails xml到json,您会找到更多答案on this questionCrack gem似乎是excellent

注意如果您使用的是rails,那么您应该在后端处理这个问题,但这本身并不能解决问题,因此我的答案就在上面。

答案 1 :(得分:0)

如果你的api只返回json,你可以设置格式资源。

示例:

<强>配置/ routes.rb中

Rails.application.routes.draw do  
  resources :posts, defaults: { format: :json }
end

如果您的api返回htmlxmljson,您可以在控制器中设置(移除defaults: { format: :json }中的config/routes.rb):

应用/控制器/ posts_controller.rb

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @post }
  format.json { render :json => @post }
end