【问题标题】:How to extract some specific values from json如何从json中提取一些特定的值
【发布时间】:2016-10-04 23:29:08
【问题描述】:

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

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

例如:如果没有符号匹配,我将保留初始条目,因此可能是:hello => He 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 文件的原因。

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

  • “号码”
  • “小”
  • “摩尔”

“名称”会出现在下方的标题中)

我已经组织了一个 .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 个字符的哈希的 harray,另一个用于 2 个字符的哈希,以及1 个字符?

【问题讨论】:

  • 我有一个不相关的问题-但自从我阅读您的第一篇文章以来我一直在考虑这个问题-您打算如何处理,例如,南希,您会选择 N 代表氮还是 Na对于钠 - 这只是一个例子 - 但我很好奇你打算如何处理它 - 并使用你的例子 - 你如何选择使用氦代替氢气而不是氢气?
  • 我在您询问时编辑了我的帖子,我相信...它需要循环并搜索具有 3 个字符、2 个字符、1 个字符的符号
  • 嗯,我很奇怪 - 所以我会将输入字符串转换为数组 - 我会颠倒顺序 - 然后我会编写某种递归循环(我不擅长那些东西)以三个开头,如果它有效,则将所有三个都弹出 - (或者你可以使用切片 - 我只是不擅长切片),如果它不起作用 - 检查两个 - 检查一个 - 然后默认- 可能运行一个复杂的案例语句?我可以在我的大脑中看到如何做到这一点,但我无法编写代码:)
  • 我也有这个想法,但是我还没有找到代码
  • 你不会“找到”代码 - 你必须编写它 - 一旦你分解它,它就是非常基本的 ruby​​ 东西 - 只需写出你的伪代码

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


【解决方案1】:

正确的 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
       }
  }
}]

【讨论】:

  • @vivek 这些不是答案,我知道你不能发表评论,所以你使用答案,但请考虑删除它们。因为它们不能被标记为正确。并给问题一个回答的机会
猜你喜欢
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
  • 2021-02-08
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 2019-09-07
相关资源
最近更新 更多