如何用 JSON 表示元数据

问题描述 投票:0回答:2

注意:这是一个 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"
        },
    ]
}

node.js json metadata jsonschema json-api
2个回答
1
投票

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

在这种情况下,您可能希望考虑 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 的 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
投票
{
    "characteristics": {
        "organism": {
            "name": "",
            "accession": "",
            "ref": ""
        },
        "organism_variant": {
            "name": "",
            "accession": "",
            "ref": ""
        },
        "organism_part": {
            "name": "",
            "accession": "",
            "ref": ""
        }
    }

}

参考链接:https://2isa.readthedocs.io/en/latest/other/json-metadata.html

© www.soinside.com 2019 - 2024. All rights reserved.