Ruby JSON


Ruby JSON 技术文档

JSON是一种轻量级的数据交换格式,它以易于阅读和编写的文本格式呈现,并且可以被多种编程语言方便地进行解析和生成。在Ruby语言中,提供了标准库中的json库来解析和生成JSON数据。

安装JSON库

JSON库已经是Ruby标准库的一部分,因此可以直接在代码中引入json库:

require 'json'

解析JSON

JSON库提供了parse方法来解析JSON数据,该方法接受一个字符串参数,表示需要解析的JSON数据,解析后返回对应的Ruby对象表示。

json_str = '{"name": "Tom", "age": 18}'
json_obj = JSON.parse(json_str)

puts json_obj["name"] # Tom
puts json_obj["age"] # 18

生成JSON

JSON库提供了generate方法来生成JSON数据,该方法接受一个Ruby对象参数,表示需要生成JSON数据的对象,生成后返回对应的JSON字符串表示。

person = {"name": "Tom", "age": 18}
json_str = JSON.generate(person)

puts json_str # {"name":"Tom","age":18}

处理JSON中的数组

JSON数据中可以包含数组类型,JSON库也提供了相应的处理方法。解析JSON数据后,可以将数组直接当做Ruby的数组来使用;生成JSON数据时,可以将Ruby的数组作为参数传递给generate方法,JSON库会自动将其转换为对应的JSON数组。

json_str = '{"name": "Tom", "grades": [90, 85, 95]}'
json_obj = JSON.parse(json_str)

puts json_obj["grades"][0] # 90

person = {"name": "Tom", "grades": [90, 85, 95]}
json_str = JSON.generate(person)

puts json_str # {"name":"Tom","grades":[90,85,95]}

处理JSON中的嵌套对象

JSON数据中也可以包含嵌套的对象,JSON库同样支持解析和生成这种类型的JSON数据。解析JSON数据后,可以将嵌套的对象直接当做Ruby的哈希表来使用;生成JSON数据时,可以将Ruby的哈希表作为参数传递给generate方法,JSON库会自动将其转换为对应的JSON对象。

json_str = '{"name": "Tom", "address": {"province": "Guangdong", "city": "Shenzhen"}}'
json_obj = JSON.parse(json_str)

puts json_obj["address"]["city"] # Shenzhen

person = {"name": "Tom", "address": {"province": "Guangdong", "city": "Shenzhen"}}
json_str = JSON.generate(person)

puts json_str # {"name":"Tom","address":{"province":"Guangdong","city":"Shenzhen"}}

解决JSON数据中不支持的字符

JSON数据中有一些ASCII字符在JSON格式中是不支持的,比如Unicode码的字符。对于这种情况,JSON库提供了一些选项来处理这种情况,例如可以将这些字符进行转义来生成对应的JSON字符串。

person = {"name": "小明", "age": 18}
json_str = JSON.generate(person, :ascii_only => true)

puts json_str # {"name":"\u5C0F\u660E","age":18}

总结

Ruby的json库提供了方便易用的方法来解析和生成JSON数据,并且支持JSON数据中的数组和嵌套对象。通过使用该库,可以让Ruby应用轻松地与其他平台和服务之间进行数据交换。