gpt4 book ai didi

javascript - JSON:最好使用一个对象(键/值对),还是两个对象来将数据与模型分开?

转载 作者:行者123 更新时间:2023-11-29 10:48:40 25 4
gpt4 key购买 nike

我没有实现太多 JSON,所以我很好奇是否有处理数据的建议方法。我猜想有两种主要方法(也许它们是无效的 JSON),但我想看看是否有任何额外的优点/缺点,或者更好的方法?


方法 1:键/值对的组合

var all_in_one = { "person"  : [{
"firstName" : "John",
"lastName" : "Smith",
"phone" : [{
"areaCode" : "800",
"number" : "222-3333"
},
{
"areaCode" : "800",
"number" : "222-3334",
"extension" : "1111"
}]
},
{
"firstName" : "John",
"lastName" : "Rolfe"
},
{...}],
"other" : [{...}]
};

好处:

  • 键接近值(在循环和拉取值时更直观和更清晰的代码)
  • 不需要值/键(流体模型/结构)

问题:

  • 多条记录的开销更大(键重复)

方法 2:键值分离

var json = { "model" : { "person" : ["firstName","lastName",["areaCode","number","extension"]],
"other" : [...]
},
"data" : { "person" : [["John","Smith",[["800","222-3333",undefined],
["800","222-3334","1111"]]],
["John","Rolfe",[[undefined,undefined,undefined]],
[...]
],
"other" : [...]
}
};

好处:

  • 更少的开销(键定义一次)
  • 可以在一处更改的静态模型/结构

问题:

  • 如果预期会发生变化,静态模型/结构可能会出现更多问题
  • 提取数据时代码可能会比较困惑

最佳答案

我从未见过有人使用方法 2。它没有将“数据与模型”分开;无论如何,这没有意义,因为数据模型。您所做的只是让您很难分辨任何数据是什么

我想现在您可以在一个地方重命名一个字段,但这一定是最不常见的架构更改类型之一。添加一个字段、移动一个字段、删除一个字段、交换两个字段、使一个字段成为可选字段等等都将是一场无法验证的噩梦。

(至于开销,gzip 将在线处理它,并且您的 JSON 解码器和/或语言希望足够聪明,可以为每个重复的键重用相同的字符串对象。)

关于javascript - JSON:最好使用一个对象(键/值对),还是两个对象来将数据与模型分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14433112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com