【问题标题】:Convert html response to json将html响应转换为json
【发布时间】:2017-12-15 02:07:18
【问题描述】:

我正在尝试在 Rails 中实现 SMS API,当我点击 API url 时,我得到以下 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

【问题讨论】:

  • 如何将数据打印到视图中?
  • 我只在控制器中渲染它。
  • 是的,很明显。您也可以发布该代码吗?
  • 不,我想将其转换为 json,以便 android 开发人员可以读取它。根据 ,他会向用户显示一些消息。
  • 我只是想看看你是否通过散列传递数据,因为如果是,你可以使用一个叫做 to_json 的简洁的东西,apidock.com/rails/Hash/to_json

标签: ruby-on-rails ruby json


【解决方案1】:

很遗憾,此时你不能将html直接转换为json,但你可以将html转换为hash,然后再将hash转换为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 to json,你会找到更多答案on this questionCrack gem 似乎是 excellent

请注意,如果您使用的是 rails,您应该在后端处理这个问题,但这本身对答案没有帮助,因此我在上面的回答。

【讨论】:

    【解决方案2】:

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

    例子:

    config/routes.rb

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

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

    app/controller/posts_controller.rb

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

    【讨论】:

      猜你喜欢
      • 2020-04-09
      • 1970-01-01
      • 2014-05-24
      • 2016-02-13
      • 2021-09-04
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多