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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在Rails中使用数组解析JSON前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个远程服务器返回的以下 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"]
原文链接:https://www.f2er.com/ruby/267809.html

猜你在找的Ruby相关文章