Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将输入与ruby中json文件中的字段进行比较_Json_Ruby - Fatal编程技术网

将输入与ruby中json文件中的字段进行比较

将输入与ruby中json文件中的字段进行比较,json,ruby,Json,Ruby,我试图创建一个接受输入的函数。在这种情况下,这是一个跟踪代码。在JSON文件中查找跟踪代码,然后将跟踪代码作为输出返回。json文件如下所示: [ { "tracking_number": "IN175417577", "status": "IN_TRANSIT", "address": "237 Pentonville Road, N1 9NG" }, { "tracking_number": "IN175417578", "status":

我试图创建一个接受输入的函数。在这种情况下,这是一个跟踪代码。在JSON文件中查找跟踪代码,然后将跟踪代码作为输出返回。json文件如下所示:

[
  {
    "tracking_number": "IN175417577",
    "status": "IN_TRANSIT",
    "address": "237 Pentonville Road, N1 9NG"
  },
  {
    "tracking_number": "IN175417578",
    "status": "NOT_DISPATCHED",
    "address": "Holly House, Dale Road, Coalbrookdale, TF8 7DT"
  },
  {
    "tracking_number": "IN175417579",
    "status": "DELIVERED",
    "address": "Number 10 Downing Street, London, SW1A 2AA"
  }
]
我已开始使用此功能:

def compare_content(tracking_number)
  File.open("pages/tracking_number.json", "r") do |file|
  file.print()
end
不确定如何将输入与json文件进行比较。任何帮助都将不胜感激。

您可以。

这将把提供的JSON解析成一个散列数组,然后可以将其与正在查找的数字进行比较

如果你是生成JSON文件的那个人,这个方法将被大量调用,请考虑直接将跟踪数字映射到它们的数据,以便此方法潜在地运行得更快。比如说,

{
  "IN175417577": {
    "status": "IN_TRANSIT",
    "address": "237 Pentonville Road, N1 9NG"
  },
  "IN175417578": {
    "status": "NOT_DISPATCHED",
    "address": "Holly House, Dale Road, Coalbrookdale, TF8 7DT"
  },
  "IN175417579": {
    "status": "DELIVERED",
    "address": "Number 10 Downing Street, London, SW1A 2AA"
  }
}
这将解析为一个散列,您可以更轻松地获取数据:

{
  "IN175417577": {
    "status": "IN_TRANSIT",
    "address": "237 Pentonville Road, N1 9NG"
  },
  "IN175417578": {
    "status": "NOT_DISPATCHED",
    "address": "Holly House, Dale Road, Coalbrookdale, TF8 7DT"
  },
  "IN175417579": {
    "status": "DELIVERED",
    "address": "Number 10 Downing Street, London, SW1A 2AA"
  }
}
require 'json'

def compare_content(tracking_number)
  json_string = File.read("pages/tracking_number.json")

  hash_from_json = JSON.parse(json_string)

  if hash_from_json.key?(tracking_number)
   tracking_hash = hash_from_json[tracking_number]
  else
    # Tracking number does not exist
  end
end