【问题标题】:How to parse a JSON file in Ruby version 1.8.7如何在 Ruby 版本 1.8.7 中解析 JSON 文件
【发布时间】:2016-04-20 19:46:19
【问题描述】:

我有一个名为 Output.json 的文件:

[
  {
    "name": "krishna",
    "service": "postman",
    "host": "xxxxxx",
    "doing": [],
    "pool": "xxxxxx",
    "roleType": "yyyyy",
    "simple": true
  }
 ]

这是我的 Test.rb 文件:

require 'rubygems'
require 'json'
require 'pp'

file = File.read('output.json')
data_hash= JSON.parse(file)
pp data_hash

当我尝试运行脚本时,我得到:

from /usr/lib/ruby/gems/1.8/gems/json-1.4.6/lib/json/common.rb:146:in `parse'

当我从 JSON 文件中调用名称时,如何打印值“krishna”。

【问题讨论】:

  • 能否请您添加完整的错误消息。看来你错过了开始。
  • @Uzbekjon 它正在打印整个 json 文件,但最后它从 /usr/lib/ruby/gems/1.8/gems/json-1.4.6/lib/json/ 显示此错误common.rb:146:in `parse' from test.rb:9
  • parse 是作为 c 扩展实现的,您知道您当前的 gem 是否针对您当前的 ruby​​ 版本编译吗?
  • 欢迎来到 Stack Overflow。请阅读“How to Ask”和“minimal reproducible example”。您的 JSON 是有效的。您说文件名是“Output.json”,但代码显示您正在尝试读取“output.json”。如果文件是“Output.json”,则代码会有不同的错误。因为你的问题不能重复。此外,您标记了 Ruby 1.9.2 和 Ruby 1.8.7。你用的是哪个?你不应该使用它们,因为它们都非常过时。

标签: ruby rubygems ruby-1.9.2 ruby-1.8.7


【解决方案1】:

虽然我从未尝试过 1.8.7 版本(只有 1.9.3 及更高版本)

我认为您的问题是您没有正确读取文件。改用 File.open

试试这个:

file = File.open('output.json').read
data_hash = JSON.parse(file)
pp data_hash

至于打印价值 krishna 试试这个(解析后):

puts data_hash['name']  # this outputs krishna

祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2013-03-22
    相关资源
    最近更新 更多