如何在Ruby中仅解析JSON中的顶级元素

时间:2015-04-30 21:32:38

标签: ruby json parsing

require 'json'

str = ' {
 "body":
[{
  "app_id": 34,
  "properties": [
    "beta",
    "0.0.3b"
  ]
}]
, "code": 200 }'

a = JSON.parse(str)

p a['code'] #200
p a['body'] # [{"app_id"=>34, "properties"=>["beta", "0.0.3b"]}]

我需要a['body']来包含原始JSON内容[{ "app_id": 34, "properties": [ "beta", "0.0.3b"]}]

更新:我使用的是ruby 1.9.3

2 个答案:

答案 0 :(得分:1)

由于a['body']被解析为JSON,并且您希望返回采用JSON格式,因此可以执行以下操作:

a['body'].to_json
=> "[{\"app_id\":34,\"properties\":[\"beta\",\"0.0.3b\"]}]"

答案 1 :(得分:1)

我无法复制您所看到的问题:

require 'json'

str = ' {
 "body":
[{
  "app_id": 34,
  "properties": [
    "beta",
    "0.0.3b"
  ]
}]
, "code": 200 }'

a = JSON.parse(str)
a # => {"body"=>[{"app_id"=>34, "properties"=>["beta", "0.0.3b"]}], "code"=>200}

a['code'] # => 200
a['body'] # => [{"app_id"=>34, "properties"=>["beta", "0.0.3b"]}]
RUBY_VERSION # => "2.2.2"

或者用1.9.3重新运行:

a['code'] # => 200
a['body'] # => [{"app_id"=>34, "properties"=>["beta", "0.0.3b"]}]
RUBY_VERSION # => "1.9.3"