首页 > 解决方案 > 比较 JSON 结构

问题描述

我想将接收到的 JSON 数据与 JSON“模板”进行比较,如果它的结构不同(而不是数据本身),那么做一些事情,比如丢弃那个 JSON。

模板:

{
"data":{
    "id":"1",
    "cmd":"34"
}

成功的Json:

{
"data":{
    "id":"15",
    "cmd":"4"
}

不成功的Json:

{
"data":{
    "id":"15"
}

这只是一个例子,要评估的 JSON 会更大,我想避免检查每个属性是否存在。(这在其他语言中是可能的,因此这个问题)

标签: javascriptjsoncomparison

解决方案


听起来您正在寻找JSON Schema或其他类似工具。

JavaScript 本身并没有提供任何内置功能来为您执行此操作。所以你需要一个已经编写好的工具来完成它(例如 JSON Schema),或者你必须自己做,检查接收到的每个属性的存在和(取决于你想要的严格程度)类型JSON。您可以在解析之后或在解析期间通过传入的“reviver”函数挂钩到解析过程来JSON.parse执行此操作,但无论哪种方式都需要进行检查。(考虑到从内到外的方式JSON.parse有效,我怀疑为此使用 reviver 会非常困难。之后在解析的数据上使用递归函数会更好。)


推荐阅读