Javascript 创建JSON对象更新程序
我正在使用javascript中的一个特定JSON对象,该对象包含多个非固定属性(我指的是将来可能更改的属性) 我一直在这样的地方工作:Javascript 创建JSON对象更新程序,javascript,json,typescript,updates,Javascript,Json,Typescript,Updates,我正在使用javascript中的一个特定JSON对象,该对象包含多个非固定属性(我指的是将来可能更改的属性) 我一直在这样的地方工作: { "propertyA": { "value": "0", "type": "A" }, "propertyB": { "childs": { "propertyC": { "prop": "value", "anotherProp": "randomValue" }
{
"propertyA": {
"value": "0",
"type": "A"
},
"propertyB": {
"childs": {
"propertyC": {
"prop": "value",
"anotherProp": "randomValue"
}
},
"type": "B"
}
}
正如您所看到的,并非所有属性都相同,也不是遵循一种模式。这是因为我用它来存储一些配置。问题是,如果我想在将来更改某些内容,假设“propertyA”
更改为“propertyA”:{“config”:“0”,键入:“A”}
,我无法将读取这些属性的javascript更改为读取新属性而忘记旧属性,因为如果我收到一个旧配置并尝试访问由最新配置版本名标识的属性,它将破坏应用程序
我的想法是:检查JSON属性>验证JSON“版本”>相应更新>保存更新>读取用新格式更改的JSON属性
到目前为止,我尝试在我的JSON中添加一个“version”:“1.0”
字段,然后创建一个更新程序来检查所有版本。以给出的示例为例,如果JSON的最新版本是1.2,那么在此之后将“propertyA”
更新为1.1和1.2版本
但我在这方面面临两个问题:
PS:如果有助于找到更简单的解决方案,我正在使用Typescript。您的两个问题可以很容易地得到缓解-1:不要经常更改API。如果您必须并且转换需要,请允许在用户继续使用您的站点时在后台进行转换(例如使用a);第二:一旦属性键被弃用,就不要重用它们。如果v1.1将
value
更改为config
,不要让v4.5引入一个新属性value
,另一种方法是编写一个实用程序合并函数,该函数接受每个json文件版本,并将其合并到一个具有版本/文件名属性的新大文件中,然后将json的其余部分作为数据属性。然后使用一个JSON到CSV的转换器——网站也存在类似的情况。。然后在Excel/Googledocs电子表格中加载CSV以比较差异@当然,我不会经常更改API来防止这种行为。但是我喜欢你建议使用WebWorker
的方式,我会仔细研究一下。@JGFMK你的建议看起来有点难实现,但是使用“合并”选项听起来不错,因为更新数据可能会花更少的时间。我还将研究它,以及如何“替换”不推荐的属性,以支持使用相同值的新属性或根据需要转换它。谢谢:)您的2个问题可以很容易地缓解-1:不要经常更改API。如果您必须并且转换需要,请允许在用户继续使用您的站点时在后台进行转换(例如使用a);第二:一旦属性键被弃用,就不要重用它们。如果v1.1将value
更改为config
,不要让v4.5引入一个新属性value
,另一种方法是编写一个实用程序合并函数,该函数接受每个json文件版本,并将其合并到一个具有版本/文件名属性的新大文件中,然后将json的其余部分作为数据属性。然后使用一个JSON到CSV的转换器——网站也存在类似的情况。。然后在Excel/Googledocs电子表格中加载CSV以比较差异@当然,我不会经常更改API来防止这种行为。但是我喜欢你建议使用WebWorker
的方式,我会仔细研究一下。@JGFMK你的建议看起来有点难实现,但是使用“合并”选项听起来不错,因为更新数据可能会花更少的时间。我还将研究它,以及如何“替换”不推荐的属性,以支持使用相同值的新属性或根据需要转换它。谢谢:)