我正在使用我用以下内容调用的API:
控制器:
@bounces = SendgridToolkit::Bounces.new(API_USERNAME, API_PASSWORD)
查看:
并返回如下数据:(对于JSON,尽管也可以进行XML调用)
[{"status"=>"550", "created"=>2015-07-06 18:37:38 UTC, "reason"=>"550 Unrouteable address ", "email"=>"jake@fake.com"}]
这对我很有用,但不幸的是,这不是我想在Rails应用程序中呈现它的方式。什么是转换这些数据的最佳方式,因为我无法访问格式不正确的字符串本身,只有从我与之交互的应用程序请求它的代码?
我在向Google提出正确的问题时遇到了一些问题,并且非常感谢您从经验中提出的任何建议。
提前感谢您的帮助!
修改
例如,无论我把它放在哪里(视图或控制器),都会返回错误,说字符串是未定义的方法:
string = '[{"status":"550","reason":"550 Unrouteable address ","email":"jake@fake.com"}]'
@showbounces = @bounces.retrieve.to_json JSON.parse(string)
@newsletters = Newsletter.all
返回:
no implicit conversion of Symbol into Integer:
@showbounces = @bounces.retrieve.to_json JSON.parse(string)
最终,我想从JSON / XML中提取选择信息,并将其用于我的视图中的图形,我可以使用CSS和HTML格式化。
答案 0 :(得分:1)
您无需从Web服务解析JSON输出字符串。 SendgridToolkit
宝石会照顾到这一点。它将数据作为Ruby对象(数组和/或哈希)返回,准备在代码中使用。
例如,在您的控制器中:
def index
bounces = SendgridToolkit::Bounces.new(API_USERNAME, API_PASSWORD)
@all_bounces = bounces.retrieve
end
然后在你看来:
<ul>
<% @all_bounces.each do |bounce| %>
<li>Bounced <%= bounce['email'] %> (<%= bounce['reason'] %>)</li>
<% end %>
</ul>