加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在Rails中使用数组解析JSON

发布时间:2020-12-16 21:11:18 所属栏目:百科 来源:网络整理
导读:我有一个远程服务器返回的以下 JSON字符串: { "users": [ { "user_id": 1,"name": "Chris Rivers",},{ "user_id": 3,"name": "Peter Curley",} ]} 我想迭代用户. ActiveSupport::JSON.decode(response.body)["users"].each do |user| puts user["name"]end
我有一个远程服务器返回的以下 JSON字符串:
{
  "users": [
    {
      "user_id": 1,"name": "Chris Rivers",},{
      "user_id": 3,"name": "Peter Curley",}
  ]
}

我想迭代用户.

ActiveSupport::JSON.decode(response.body)["users"].each do |user|
    puts user["name"]
end

据我所知,问题是:ruby无法将ActiveSupport :: JSON.decode(response.body)[“users”]识别为数组,因此puts只返回第一个用户.

我该如何解决这个问题?

解决方法

你粘贴的是无效的JSON.每个“名称”后面的尾随逗号是个问题
"name": "Chris Rivers",

您将获得一个LoadError尝试使用ActiveSupport :: JSON.decode对其进行解码

MultiJson::LoadError: 399: unexpected token at ‘{“user_id”: 1,”name”: “Chris Rivers”,{“user_id”: 3,”name”: “Peter Curley”,}]}’

如果我们清理JSON,将它变成ActiveSupport :: JSON.decode可以理解的东西

"{"users": [{"user_id": 1,"name": "Chris Rivers"},{"user_id": 3,"name": "Peter Curley"}]}"

你会看到迭代“用户”中的每个对象都没有问题(x下面是上面的JSON字符串)

[8] pry(main)> ActiveSupport::JSON.decode(x)["users"].map { |user| user["name"] }
=> ["Chris Rivers","Peter Curley"]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读