首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储一系列创建JSON的差异

存储一系列创建JSON的差异
EN

Software Engineering用户
提问于 2020-08-26 20:36:21
回答 1查看 150关注 0票数 0

tl;dr是否有一种现有的、标准化的方法来存储JSON或JSON类型对象的差异序列?

问题

因此,目前,我有一个类似于这样的类(伪代码):

代码语言:javascript
复制
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();
  }
}

所以如果我运行一些代码

代码语言:javascript
复制
pool.swim();
pool.buyPretzel();
pool.swim();
pool.leave();

然后,我得到一个日志记录的JSON对象,它看起来像

代码语言:javascript
复制
{
  "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对象记录。

然而,由于以下几个原因,这种安排并不理想:

  1. 当我还在游泳池的时候,我可能希望看到描述的当前状态。
  2. 由于我无法控制的原因,程序通常在没有通知的情况下终止,导致任何存储在描述中但尚未记录的内容丢失。

因此,我认为应该将一系列的差异存储到JSON对象中。例如,我可以生成一个类似于以下内容的日志:

代码语言:javascript
复制
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对象。然后我可以在现场检查这些对象,如果编写这个输出的程序崩溃,我不会丢失它们。

我不想在这里重新发明轮子。做这类事情有什么现存的格式吗?这种方法有名字吗?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2020-08-26 21:59:06

看看JSON贴片。有一些库可用于将补丁应用于JSON文档,并创建用于描述JSON文档两个版本之间差异的补丁。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/415244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档