如何从json中提取一些特定的值

时间:2016-10-04 23:29:08

标签: ruby-on-rails json ruby ruby-on-rails-4

我仍在尝试创建一个应用程序,用户可以使用化学元素转换他的名字或单词(比如打破坏标识)。

用户将在文本字段中输入单词,当他提交时,如果匹配则返回带有相应化学符号的单词,如果不匹配,则会显示“原始”字母。

例如:如果没有符号匹配,我会保留初始条目,因此它可能是:hello => ll O (粗体字符代表现有的化学符号)

我知道这可以在js中完成,但挑战是ROR(顺便说一下,我不知道任何js ......)

在之前的一个问题中,我只有一个哈希:

     symbols =
      {"cr" => "Cr",
      "sb" => "Sb",
      "ag" => "Ag",
      "ar" => "Ar",
      "as" => "As",
      "at" => "At",
      "n"  => "N",
      "ba" => "Ba",
      "bk" => "Bk"}

我正在使用name.downcase.gsub!(Regexp.union(symbols.keys), symbols)来转换用户条目。实际上我需要更多的数据...这就是我选择json文件的原因。

就像这张照片一样,我需要使用:

  • “数量”
  • “小”
  • “摩尔”

enter image description here

“名称”将出现在下面的标题中)

我已经组织了一个 .json 文件,其中包含我在应用中可能需要的所有符号,并将其存储在我的config/periodic_table.json中(仅粘贴一个样本,因为它很长)。

1°)如果用户输入“hello”,我如何循环搜索“he”哈希并打印“name”,“number”,“small”和“molar”

2°)我将使用json作为数据库(我将使用heroku进行部署)所以我有什么需要转换才能一起使用json和pg吗?

[ "symbols"

        {
           "h": {
                "name": "Hydrogen",
                "number": 1,
                "small": "H",
                "molar": 1.00794
            },
            "he": {
                "name": "Helium",
                "number": 2,
                "small": "He",
                "molar": 4.002602
            },
          "b":  {
                "name": "Boron",
                "number": 5,
                "small": "B",
                "molar": 10.811
            },
            "c": {
                "name": "Carbon",
                "number": 6,
                "small": "C",
                "molar": 12.0107
            },
            "n": {
                "name": "Nitrogen",
                "number": 7,
                "small": "N",
                "molar": 14.0067
            }
    }
]

我需要首先使用包含3个字符的符号循环,然后是2然后1 ...我将改变json中的任何一个,就像哈希包含3个字符的哈希,另一个包含2个字符,以及1char?

1 个答案:

答案 0 :(得分:0)

更正Json格式

[{
"symbols":{
  "h":{
     "name": "Hydrogen",
     "number": 1,
     "small": "H",
     "molar": 1.0079
       },
  "he":{
     "name": "Helium",
     "number": 2,
     "small": "He",
     "molar": 4.002602
        },
  "b": {
     "name": "Boron",
     "number": 5,
     "small": "B",
     "molar": 10.811
       },
  "c": {
    "name": "Carbon",
    "number": 6,
    "small": "C",
    "molar": 12.0107
       },
  "n": {
     "name": "Nitrogen",
     "number": 7,
     "small": "N",
     "molar": 14.0067
       }
  }
}]