我正在尝试在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
?
答案 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 question。 Crack gem似乎是excellent。
注意如果您使用的是rails,那么您应该在后端处理这个问题,但这本身并不能解决问题,因此我的答案就在上面。
答案 1 :(得分:0)
如果你的api只返回json
,你可以设置格式资源。
示例:
<强>配置/ routes.rb中强>
Rails.application.routes.draw do
resources :posts, defaults: { format: :json }
end
如果您的api返回html
,xml
和json
,您可以在控制器中设置(移除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