一尘不染

从json到ruby哈希?

json

我可以使用一种方法

require 'json'

def saveUserLib(user_lib)
    File.open("/Users/name/Documents/user_lib.json","w") do |f|
    f.write($user_lib.to_json)
    end
end

uname = gets.chomp
$user_lib["_uname"] = uname
saveUserLib($user_lib)

但是我该如何以user_lib的身份重新找回它?


阅读 189

收藏
2020-07-27

共1个答案

一尘不染

您想要JSON.parseJSON.load

def load_user_lib( filename )
  JSON.parse( IO.read(filename) )
end

此处的关键是IO.read用作从磁盘加载JSON字符串的一种简单方法,以便可以对其进行解析。或者,如果文件中包含UTF-8数据:

  my_object = JSON.parse( IO.read(filename, encoding:'utf-8') )

我已经链接到上面的JSON文档,所以您应该阅读它以获取更多详细信息。但总而言之:

  • json = my_object.to_json —在特定对象上创建JSON字符串的方法。
  • json = JSON.generate(my_object) —从对象创建JSON字符串。
  • JSON.dump(my_object, someIO) —创建一个JSON字符串并写入文件。
  • my_object = JSON.parse(json) —从JSON字符串创建Ruby对象。
  • my_object = JSON.load(someIO) —从文件创建Ruby对象。

或者:

def load_user_lib( filename )
  File.open( filename, "r" ) do |f|
    JSON.load( f )
  end
end

注意:我已经为与“ camelCase”相对应的方法使用了“ snake_case”名称,saveUserLib因为这是Ruby约定。

2020-07-27