JavaScript Object Notation,简称JSON,是一种简单和令人难以置信的轻量级数据交换格式。JSON对于机器和人类来说都很容易编写和阅读。

JSON无处不在,它被用来在网络上传输结构化数据,主要应用于API。

本快速指南将介绍如何使用和解析JSON数据,使用Ruby编程语言。

什么是解析?

解析是将一个组件,如数据字符串,分解成各种可单独使用的独立组件的过程。

如何获得JSON数据

在我们讨论如何在Ruby中解析JSON之前,最好是确保我们有一个JSON文件可以使用。

如果你没有JSON文件,你可以使用在线JSON生成器或从流行的公共API查询。

为了用Ruby解析JSON,我们需要使用gem包管理器安装JSON包。我们可以使用以下命令来完成。

gem install json

为了检查安装是否成功,打开IRB并运行代码。

require ‘json’

如果你已经成功安装了该包,运行该命令应该返回true。

irb(main):001:0> require 'json'
=> true

如何读取JSON文件

下一步是读取JSON数据。为此,我们使用File.read方法,如下面的示例代码所示。

require 'json'
raw_data = File.read('NASA.json')

将NASA.json文件替换为你希望解析的JSON文件的实际文件名。

如何解析JSON数据

一旦我们加载了文件,我们可以使用JSON.parse方法来解析JSON数据。这个方法将用JSON的键创建一个Ruby哈希值。

require 'json'
raw_data = File.read('NASA.json')
nasa_datahash = JSON.parse(raw_data)

一旦加载完毕,我们就可以像普通的Ruby哈希一样对数据进行操作。

例如,为了获得键值,我们可以这样做。

require 'json'
raw_data = File.read('NASA.json')
nasa_datahash = JSON.parse(raw_data)
puts nasa_datahash.keys

你也可以使用.values方法获得存储在JSON数据中的值。

写入JSON

假设我们想写到一个JSON文件。我们首先读取JSON文件并创建一个Ruby Hash。之后,我们可以修改数值,然后把它们写到JSON文件中。

让我们举一个JSON文件的例子,其数值如图所示。

"name": "John Doe", "age": 30, "role": "Python Programmer", "group": "AX-100"

我们可以从读取文件开始,因为。

require ‘json’
file = File.read(“user.json”)

一旦我们加载了文件,我们就可以使用JSON.parse方法来解析JSON信息,例如。

user_info = JSON.parse(file);

一旦我们将文件解析成Ruby Hash,我们就可以使用内置的方法来操作这些值。

让我们从获取键开始。

puts user_info.keys

这应该会打印出哈希键,基本上就是JSON键。每个值都被映射到其各自的值。

$ ruby json.rb
group

下一步是在现有的键上添加修改。我们可以简单地使用merge方法,如。

user_info.merge!("Country": "United States")

一旦你对Ruby哈希值做了所有的修改,并希望将修改写回JSON文件,我们可以使用write方法,将哈希值的内容以JSON格式转储,如下图所示。

File.write("user.json", JSON.dump(user_info))

一旦完成,这些变化将被追加到指定的文件中。

"name": "John Doe", "age": 30, "role": "Python Programmer", "group": "AX-100", "Country": "United States"

将哈希值转换为JSON

如果你有一个原始的Ruby哈希值,你可以使用生成方法生成JSON数据。考虑一下下面的例子。

require 'json'
this_hash = {:name => "John Doe", :age => 30, :role => "Python Programmer", :group => "AX-100", :Country => "United States"}
jsonified = JSON.generate(this_hash)
puts jsonified

以上应该创建JSON数据,其键和值对应于哈希的键和值。

要了解更多关于如何使用Ruby哈希值的信息,请参考我们关于该主题的教程。

如本教程所示,在Ruby中解析JSON数据是非常简单的。

分类:
阅读
  •