【问题标题】:ruby array of json object access a valuejson对象的ruby数组访问一个值
【发布时间】:2016-09-28 14:58:36
【问题描述】:

我有一个名为 line 的 json 对象数组:

[{"label":"Name","value":"Bob","identifier":"field2","type":"oneLineText","page":1,"page_name":"Step 1","width":"100%"},{"label":"Email","value":"bob@compagny.com","identifier":"field3","type":"email","page":1,"page_name":"Step 1","width":"100%"},{"label":"Phone Number","value":"","identifier":"field7","type":"oneLineText","page":1,"page_name":"Step 1","width":"100%"},{"label":"Comments","value":"some information about the compagny","identifier":"field5","type":"textarea","page":1,"page_name":"Step 1","width":"100%"}]

如何获取标签评论的值 :
"label":"Comments","value":"some information about the compagny"

这是我的代码:

data = JSON.parse(line) 
data.each do |key, value|
    puts "#{key}"
    puts "#{key} name: #{value["name"]}"
    puts "#{key} value: #{value["value"]}\n"
    label  = value["name"]
    value = value["value"]
    if (label eq "label") && (value eq "Comments")
         puts "#{key} value: #{value["value"]}\n"
    end
end     

解析第一个对象 id 后出现错误:

{"label"=>"Name", "value"=>"Bob", "identifier"=>"field2", "type"=>"oneLineText", "page"=>1, "page_name"=>"Step 1", "width"=>"100%"}
undefined method `[]' for nil:NilClass (NoMethodError)` 

【问题讨论】:

    标签: arrays json ruby ruby-1.9.3


    【解决方案1】:

    您可以使用以下代码访问您的数据:

    data = JSON.parse(line) 
    data.each do |d|
      puts "#{d}"
      puts "#{d} label: #{d["label"]}"
      puts "#{d} value: #{d["value"]}"
    end  
    

    解析JSON.parse 的行后,您的data 变量将包含一个哈希数组。当您遍历这个数组时,块变量d 被分配给这些哈希值之一。

    因此,在此示例中,第一次调用 puts 将显示分配给变量 d 的整个哈希,第二次调用将显示整个哈希,然后是分配给该键 label 的值哈希。

    同样,第三行显示了如何访问存储在value 键中的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-19
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 2021-08-13
      相关资源
      最近更新 更多