如何计算Ruby/Rails中的JSON对象数

use*_*092 5 ruby ruby-on-rails

如何在Ruby中"通用"计算以下格式(root,unrooted)中JSON的对象数量?一般来说,我的意思是元素可能不同("标题",例如被称为其他东西).

没有root:

{
    [
      { "title": "Post 1", "body": "Hello!" },
      { "title": "Post 2", "body": "Goodbye!" }
    ]
}
Run Code Online (Sandbox Code Playgroud)

root包装:

{
  "posts":
    [
      { "title": "Post 1", "body": "Hello!" },
      { "title": "Post 2", "body": "Goodbye!" }
    ]
}
Run Code Online (Sandbox Code Playgroud)

Bro*_*tse 14

首先,without root代码不是有效的json格式.它没有周围的花括号,所以我认为它应该如何.

在第一种情况下:

json = '[
  { "title": "Post 1", "body": "Hello!" },
  { "title": "Post 2", "body": "Goodbye!" }
]'

require 'json'
ary = JSON.parse(json)
puts ary.count
Run Code Online (Sandbox Code Playgroud)

另一种情况没有太大区别:

json = '{
  "posts":
    [
      { "title": "Post 1", "body": "Hello!" },
      { "title": "Post 2", "body": "Goodbye!" }
    ]
}')

require 'json'
hash = JSON.parse(json)
puts hash['posts'].count 
Run Code Online (Sandbox Code Playgroud)