我不是Ruby编码器,但我确实需要读取Json文件并使用这种语言访问节点。
我完成了我的作业,但由于我缺乏知识,我无法完成它们,我希望你可以补偿。
让我们从我的示例Json文件开始。
{
"app": [{
"name":"test",
"ip_address": "172.90.90.90"
}],
"mysql": [{
"server_password": "root",
"dbName":"dbname"
}],
"phpmyadmin": [{
"app_username": "root",
"app_password": "root"
}]
}
这是我放在一起阅读文件的小代码片段。
require 'json'
data = JSON.parse(File.read("data.json"))
现在,只要我做
之类的事情print data[0]
或
print data["app"]
一切都很好,但是如果我尝试访问子节点“app”。“name”,无论我采用的格式还是括号,我总是会遇到系统异常。我期待以最合理的方式做这样的事情,比如数据[“app”] [“name”],但显然不是这样。
我在Mac OS X上使用ruby编译器对此进行测试,根据我的理解,Ruby版本应该是最新的(ruby 2.0.0p247)
你能帮帮我吗? 谢谢,祝新年快乐。答案 0 :(得分:2)
原因是因为data["app"]
是一个数组:
1.9.3p484 :001 > require 'json'
=> true
1.9.3p484 :002 > data = JSON.parse(File.read("/Users/example/Desktop/json.json"))
=> {"app"=>[{"name"=>"test", "ip_address"=>"172.90.90.90"}], "mysql"=>[{"server_password"=>"root", "dbName"=>"dbname"}], "phpmyadmin"=>[{"app_username"=>"root", "app_password"=>"root"}]}
1.9.3p484 :003 > print data["app"]
[{"name"=>"test", "ip_address"=>"172.90.90.90"}]
如果你data["app"].first["name"]
,你会得到你想要的东西:
1.9.3p484 :004 > print data["app"].first["name"]
test
答案 1 :(得分:1)
在您的示例数据中,app
包含一个数组,因此您需要访问它:
data["app"][0]["name"]