Ruby on rails 寻找关于如何规范来自不同来源的传入json格式的建议

Ruby on rails 寻找关于如何规范来自不同来源的传入json格式的建议,ruby-on-rails,ruby,json,parsing,Ruby On Rails,Ruby,Json,Parsing,我正在从事一个从许多不同来源接收数据(json)的项目。每个源以不同的格式返回json,但所有服务都属于同一类别,即Jira的问题和PivotalTracker的故事都具有相同的核心信息 我正在寻找一种尽可能规范化的方法,以便将来可以添加其他服务和格式。现在,我分别处理每种响应类型(Jira、PivotalTracker),并对每种响应单独采取行动 到目前为止,我认为每个服务都需要一个解析器,即JiraIssueParser、PivotalTrackerStoryParser等,它将响应转换为一

我正在从事一个从许多不同来源接收数据(json)的项目。每个源以不同的格式返回json,但所有服务都属于同一类别,即Jira的问题和PivotalTracker的故事都具有相同的核心信息

我正在寻找一种尽可能规范化的方法,以便将来可以添加其他服务和格式。现在,我分别处理每种响应类型(Jira、PivotalTracker),并对每种响应单独采取行动

到目前为止,我认为每个服务都需要一个解析器,即JiraIssueParser、PivotalTrackerStoryParser等,它将响应转换为一种通用格式,一个方法可以使用该格式进行后续发布,而不是让每个方法都执行接收/解析/发布

类似于这种格式:

{
  issue: {
    title: ,
    description: ,
    assignee: ,
    comments: {
      1: {
        id: ,
        title: ,
        body: 
      }
    time_entries: {
      1: {
        id: ,
        time: ,
        date: 
      }
    }
  }
}
我想在某个地方定义公共模式,以便每个解析器的输出总是相同的。我认为这可以通过一个YAML文件来完成,但我不确定如何进行,以及如何在解析器中使用它

我将非常感谢关于如何做到这一点的一些建议。也许这是一个非常愚蠢的问题,我应该从每个解析器输出上面的格式,但是我认为使用某种强制/验证的格式是有意义的


如果有人有任何想法的话,我很乐意提出新的建议。提前感谢。

如果您使用的是Rails,我假设您将在某个时候拥有一个关系数据库

我的建议是定义ActiveRecord模型来表达“标准化”格式:问题、注释、时间条目等

那么,解析器的工作就是将JSON数据强制转换为适当的模型对象和属性并保存它们。因此,您的模型强制执行规范数据结构(即模式),您甚至可以使用验证器进行进一步的健全性检查


最后,我还将原始JSON保存在模型旁边的某个地方,最好也保存在数据库中。即使您已经解析了JSON,保留它对于故障排除也很方便。例如,如果您发现并修复了一个解析错误,您可以在保存的JSON上重新运行解析器,而无需重新下载原始外部源的所有内容。

感谢您的回复和良好建议。对于外部对象(问题、评论等),我考虑使用MongoDB。你认为这是个好办法吗?@Adam我没有MongoDB的经验,所以我帮不了你。我想这取决于您对规范模式的具体期望。