javascript - 比较 JSON 结构
问题描述
我想将接收到的 JSON 数据与 JSON“模板”进行比较,如果它的结构不同(而不是数据本身),那么做一些事情,比如丢弃那个 JSON。
模板:
{
"data":{
"id":"1",
"cmd":"34"
}
成功的Json:
{
"data":{
"id":"15",
"cmd":"4"
}
不成功的Json:
{
"data":{
"id":"15"
}
这只是一个例子,要评估的 JSON 会更大,我想避免检查每个属性是否存在。(这在其他语言中是可能的,因此这个问题)
解决方案
听起来您正在寻找JSON Schema或其他类似工具。
JavaScript 本身并没有提供任何内置功能来为您执行此操作。所以你需要一个已经编写好的工具来完成它(例如 JSON Schema),或者你必须自己做,检查接收到的每个属性的存在和(取决于你想要的严格程度)类型JSON。您可以在解析之后或在解析期间通过传入的“reviver”函数挂钩到解析过程来JSON.parse
执行此操作,但无论哪种方式都需要进行检查。(考虑到从内到外的方式JSON.parse
有效,我怀疑为此使用 reviver 会非常困难。之后在解析的数据上使用递归函数会更好。)
推荐阅读
- javascript - JavaScript/React 基于第一个字段自动填充其他字段
- javascript - 在黄瓜控制台中,它返回与出错的块相关的字符串,但在代码的不同点内部有错误
- java - Load CSV file in Redis using Redis-cli on Windows
- eclipse - TransportEclipse 错误:无法获取远程存储库引用。https://github.com/VicentGN/prueba3.git:无法打开 git-upload-pack
- excel - SAS WPS DDE 将数据导出到 Excel:错误 DMLERR_NO_CONV_ESTABLISHED
- python - 如何在 Python Pandas 中加入 CSV 比较 2 CSV
- java - Spring Boot 中的 Log4j2 复合配置支持
- php - 为什么我不能使用没有整数值的 cURL 获得那个 url 链接?
- node.js - 如果不保存新项目,则 findOneAndUpdate 不起作用(Mongoose,Node.js)
- javascript - 下拉选择不自动填充文本框