gpt4 book ai didi

ruby-on-rails - 处理 HTTP 响应和解析 JSON 数据时遇到问题

转载 作者:可可西里 更新时间:2023-11-01 17:03:56 27 4
gpt4 key购买 nike

我正在使用 Ruby on Rails 3,我想用以下代码解决一个问题,即 Web 客户端应用程序从使用 Rack 中间件的 Web 服务应用程序接收回一些 JSON 数据以进行响应。

在我的网络客户端应用程序模型中

response_parsed = JSON.parse(response.body)
if response_parsed["account"]
...
else
return response
end

在上面的代码中,response.body 从使用 Rack 中间件响应 Web 客户端的 Web 服务应用返回:

accounts = Account.where(:id => ids)
[200, {'Content-Type' => 'application/json'}, accounts.to_json] # That is, response.body = accounts.to_json

数据传输正常,但出现如下错误

TypeError
can't convert String into Integer

*Application Trace*
lib/accounts.rb:107:in `[]'

107行对应

if response_parsed["account"]
...

哪里出了问题,出了什么问题?如何解决?


如果我尝试调试 respons.body 我会得到

# Note: this is an array!
"[{\"account\":{\"firstname\":\"Semio\",\"lastname\":\"Iaven\"\"}}]"

最佳答案

如果我说的是您已经意识到的话,请原谅我。

看起来您的响应是一个单元素数组,其中的第一个元素是散列。因为响应是一个数组,所以当您使用 [] 时,它期望一个整数表示您要访问的数组中的项目的索引,这就是错误消息的意思——它期望您告诉它你想要的项目的整数值,但你给了它一个字符串。

如果你改为:

response_parsed[0]['account']

看起来你会得到你想要的。

关于ruby-on-rails - 处理 HTTP 响应和解析 JSON 数据时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5254875/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com