json - 如何处理 JSON 中的多对多关系?

标签 json core-data many-to-many

这是我之前关于“Managing employee contracts in a many-to-many relationship?”和this question的问题的后续问题

我有一个可以这样解释的关系:
company --< contracts >-- employees
我正在通过 JSON 导入数据。为简单起见,如下所示。

{
  "companies" : [
    {
      "name" : "Company A",
      "employees" : [
        {
          "name" : "Tom",
          "contract" : {
            "length" : "10",
            "salary" : "10000"
          }
        }
      ]
    }
  ]
}

问题是,我不确定这是否正确。

在我的模型关系中 contract坐在company之间和 employees而在我上面的代码中,我把它作为一个对象,它作为员工下面的 child 。

因此,我的问题是,联结表应该放在 JSON 提要中的什么位置?

它应该作为员工的 parent ,还是可以放在哪里?

我不确定我是否做得对,并且欢迎任何关于构建/布局依赖于联结表的 JSON 提要的最佳方式的帮助/想法。

我知道这可能看起来很愚蠢,但我正在尝试确定处理连接表时的最佳标准。

谢谢。

编辑。

目的/背景

我正在尝试使用 TouchJSON 将 JSON 读入核心数据。抱歉没有早点澄清上下文。更新了标签。

我将 JSON 读入 NSDictionary。如果我开始将对象分开,我不知道如何让 TouchJSON/iOS 在解析/读取数据到内存时理解每个关系的上下文。

最佳答案

在没有外键的情况下完成此操作的唯一方法是复制关系中“许多”实体的一侧。根据您上面的示例,这意味着在整个数据结构中复制员工。

你真的只能像你的关系数据库解决这个问题一样解决这个问题——使用映射表和外键。

{
  "companies" : [
    {
      "id" : 1,
      "name" : "Company A"
    }
  ],

  "employees" : [
    {
      "id" : 1,
      "name" : "Fred"
    }
  ],

  "contracts" : [
    {
      "id" : 123,
      "company_id" : 1,
      "employee_id": 1
      "length" : 10,
      "salary" : 10000
    }
  ]
}

(顺便说一句,数值在 JSON 中是有效的,它们不需要被引用)

那么,问题是在序列化时您是否有这些 key 可用。如果没有,那么您可能需要分配一些,即使是为了 JSON 的目的而临时分配,以实现您的目标。

关于json - 如何处理 JSON 中的多对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6206903/

相关文章:

python - Django 使用相关实体字段序列化查询集

java - 复合 id 类的 hashCode() 和 equals() 方法

java - Hibernate 标准 - 多对多关系

swift - sectionIndexTitles(对于 tableView : UITableView) method returns strange results

ios - UITableViewController 和 NSFetchedResultsController 编辑问题

core-data - XCode4 和数据模型编译的 MOMC 错误

hibernate - 如何在 grails ORM 中建模学生-类(class)关系?多对多关系

javascript - jQuery AJAX 请求返回与预期不同的 JSON

javascript - 警报不显示在 JSON 回调中

sql - 在 postgres 中使用 upsert 和 nodejs 中的 json 文件