JSON 最佳实践 : GUIDS for contained data

标签 json

我有一个客户使用 JSON 来表示对象。例如:

var person = {
  fname: "John",
  lname: "Doe",
  nicknames: ["jake", "kevin"]
}

为了编辑这些条目,我们希望包含每个对象的 GUIDS。尚未建立嵌入 GUID 的方法。我目前正在考虑做这样的事情:
var person = {
  _guids: {
    fname: "XXX",
    lname: "XXX",
    _nicknames: "XXX", /* This GUID corresponds to the nickname container */
    nicknames: ["jake-guid", "kevin-guid"],
  }
  fname: "John",
  lname: "Doe",
  nicknames: ["jake", "kevin"]
}

如果每个项目都是它自己的对象,它会变得非常困惑,并且在不需要 GUID 的情况下会禁止干净的交换。但是,这种方法也导致了如何处理这样的问题:
var person = {
  _guids: {
    fname: "XXX",
    lname: "XXX",
    sacks_of_marbles: ["container-guid",
                       "first-sacks-guid", ["XXX", "XXX"],
                       "second-sacks-guid", ["XXX", "XXX"]]
  }
  fname: "John",
  lname: "Doe",
  sacks_of_marbles: [["red", "blue-with-swirls"], ["green", "pink"]]
}

关于如何保持清洁、避免冗长以及包含 GUID 的能力有什么建议吗?

最佳答案

在我看来,最干净的“识别策略”是,首先只包含相关的标识符,其次将那些标识符包含在对象的范围内。

在您的情况下,如果得知 fname,我真的会感到震惊。和 lname需要自己的标识符。它们是单个 person 的属性或属性。对象或记录。 person可能会有一个ID,以及相关的fnamelname值应该可以通过 person 轻松识别语境:

var person = {
  id: <guid>,
  fname: "Robert",
  lname: "Marley",
  nicknames: ["Bob Marley"]
};

或者,如果 nicknames属性实际上是一个引用列表,也许是这样的:
var person = {
  id: <guid>,
  fname: "Robert",
  lname: "Marley",
  nicknames: [{id:<guid>,nickname:"Bob Marley"}]
};

如果由于某些特殊原因,每个名称都是其自己的具有属性和标识符的半独立记录,请将其视为完全限定的对象:
var person = {
  id: <guid>,
  fname: {id:<guid>, name:"Robert"},
  lname: {id:<guid>, name:"Marley"},
  nicknames: [ {id:<guid>,nickname:"Bob Marley"} ]
};

虽然这里的第三个例子并不是非常令人困惑,但它可能比必要的要冗长得多。我强烈建议为第一个例子拍摄并让上下文来完成它的工作。

关于JSON 最佳实践 : GUIDS for contained data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16656080/

相关文章:

javascript - 将响应发送回 javascript 时从 python 中删除 unicode 字符

python - 将 JSON 转换为 Excel 时 Pandas 值错误

java - JSON解析子项而不使用任何库

php - 解析JSON并加载到MYSQL的性能

python - 在Python中解析JSON

javascript - 从 Google 电子表格单元格中解析 Json

android - Gson无法在Kotlin中解析一个字符串json格式的数据

javascript - IE10 - 如何在网络开发工具的响应体中显示json格式

javascript - SQL数据库转Json数组

python - Redis中的嵌套字典和分组查询