如何用 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"
}
}
}
注意事项
推理引擎和检查器目前需要jq运行。有一个 jq 的 node.js 包装器(例如
),这可能会有所帮助。yarn add node-jq
JESS 相对较新。 JESS 语言是稳定的,但有一些更细微的地方可能会发生变化。
我是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"
}
}
}
更多推荐
如何用 JSON 表示元数据
发布评论