最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何用 JSON 表示元数据

网站源码admin43浏览0评论

如何用 JSON 表示元数据

如何用 JSON 表示元数据

注意:这是一个 NodeJs 应用程序

我有以下存储问题和答案的 JSON 对象:

{
    "id": "SOME_GUID",
    "questions": {
        "page-1": {
            // ... JSON schema for page 1.
        },
        "page-2": {
            // ... JSON schema for page 2.
        }
    },
    "answers": {
        "page-1": {
            "page-1-question-1": "something"
        },
        "page-2": {
            "page-2-question-1": true,
            "page-2-question-2": "foo"
        },
    }

}

以特定方式表示数据比另一种方式有好处吗?我自然会选择一个简单的键/值对表示法(如下所示),因为它似乎符合这里的要求。但是我在野外看到了“数组表示法”(如下所示)(在用 Java 编写的项目中)

键/值对表示法(我自然会使用的):

{
    "meta": {
        "createdData": "some date",
        "modifiedData": "some date",
        "referenceNumber": "some reference number",
        "type": "some type code"
    }
}

“数组”符号

{
    "meta": [
        {
            "key": "createdDate",
            "value": "some date"
        },
        {
            "key": "modifiedData",
            "value": "some date"
        },
        {
            "key": "referenceNumber",
            "value": "some reference number"
        },
        {
            "key": "type",
            "value": "some type code"
        },
    ]
}

回答如下:

我自然会选择简单的键/值对表示法

在这种情况下,您可能希望考虑 JSON Extended Structural Schema 语言 (JESS) 和相关工具,包括模式推理引擎 和验证检查器。

这个想法基本上是使用推理引擎来获得一个完全反映输入的草图;根据需要修改它, 例如覆盖一些推论或定义更复杂的约束;进而 将派生模式与验证检查器一起使用。

推理引擎需要有效的 JSON 作为输入,所以我调整了给定的示例,如下所示。鉴于此作为输入, 模式推理引擎产生:

{
  "id": "string",
  "questions": {
    "page-1": {
      "page1 schema": {}
    },
    "page-2": {
      "page2 schema": {}
    }
  },
  "answers": {
    "page-1": {
      "page-1-question-1": "string"
    },
    "page-2": {
      "page-2-question-1": "boolean",
      "page-2-question-2": "string"
    }
  }
}

注意事项

  1. 推理引擎和检查器目前需要jq运行。有一个 jq 的 node.js 包装器(例如

    yarn add node-jq
    ),这可能会有所帮助。

  2. JESS 相对较新。 JESS 语言是稳定的,但有一些更细微的地方可能会发生变化。

  3. 我是JESS的作者

示例 JSON 输入

{
  "id": "SOME_GUID",
  "questions": {
    "page-1": {
      "page1 schema": {}
    },
    "page-2": {
      "page2 schema": {}
    }
  },
  "answers": {
    "page-1": {
      "page-1-question-1": "something"
    },
    "page-2": {
      "page-2-question-1": true,
      "page-2-question-2": "foo"
    }
  }
}

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论