tl;dr是否有一种现有的、标准化的方法来存储JSON或JSON类型对象的差异序列?
因此,目前,我有一个类似于这样的类(伪代码):
class SwimmingPool
{
JSON description;
void swim()
{
startTime = getCurrentTime();
enterWater(); flailLimbs(); exitWater();
endTime = getcurrentTime();
description["In water"].append({"start" : startTime, "stop" : stopTime});
}
void buyPrezel()
{
sendCash(pretzelPrice);
description["Snacks"]["Pretzels"]["Quantity"]++;
description["Total sodium consumption (mg)"] += 30;
}
// ... other functionality ...
void leave()
{
description["Left at"] = getCurrentTime();
log(description);
description.clear();
}
}所以如果我运行一些代码
pool.swim();
pool.buyPretzel();
pool.swim();
pool.leave();然后,我得到一个日志记录的JSON对象,它看起来像
{
"Total sodium consumption (mg)" : 30,
"In water" : [
{ "start" : "12:13", "stop" : "12:15" },
{ "start" : "13:00", "stop" : "13:02" }
],
"Snacks" : { "Pretzels" : 1 },
"Left at" : "13:16"
}如果我再次访问池,我将获得第二个JSON对象记录。
然而,由于以下几个原因,这种安排并不理想:
因此,我认为应该将一系列的差异存储到JSON对象中。例如,我可以生成一个类似于以下内容的日志:
descriptions["SwimmingPool1746"]["In water"][8]["start"] = "13:45"
descriptions["SwimmingPool1746"]["In water"][8]["stop"] = "13:47"
descriptions["SwimmingPool408"]["In water"][8]["stop"] = "13:46"
descriptions["SwimmingPool408"]["In water"][8]["stop"] = "13:48"
descriptions["SwimmingPool408"]["Snacks"]["Pretzels"]["Quantity"] = 6
descriptions["SwimmingPool408"]["Total sodium consumption (mg)"] = 180
descriptions["SwimmingPool408"]["Snacks"]["Pretzels"]["Quantity"] = 7
descriptions["SwimmingPool408"]["Total sodium consumption (mg)"] = 210
descriptions["SwimmingPool408"]["Left at"] = "13:52"
flushLog(descriptions["SwimmingPool408"])
descriptions["SwimmingPool1746"]["In water"][8]["start"] = "13:55"
descriptions["SwimmingPool1746"]["In water"][8]["stop"] = "13:57"然后,我可以有一个单独的进程来流这个日志,遵循它输出的指令,并构建JSON对象。然后我可以在现场检查这些对象,如果编写这个输出的程序崩溃,我不会丢失它们。
我不想在这里重新发明轮子。做这类事情有什么现存的格式吗?这种方法有名字吗?
发布于 2020-08-26 21:59:06
看看JSON贴片。有一些库可用于将补丁应用于JSON文档,并创建用于描述JSON文档两个版本之间差异的补丁。
https://softwareengineering.stackexchange.com/questions/415244
复制相似问题