【问题标题】:Not able to understand ajv validation output for a FHIR resources无法理解 FHIR 资源的 ajv 验证输出
【发布时间】:2018-07-31 11:53:12
【问题描述】:

我正在使用 ajv 验证 FHIR 资源。

ajv -s fhir.schema.json -d SampleOperationOutCome.json

这是 SampleOperationOutCome.json 文件

{
"resourceType": "OperationOutcome",
"id": "101",
"text": {
    "status": "additional",
    "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p>text.<\/p><\/div>"
},
"issue": [
    {
        "severity": "error",
        "codeerror": "invalid",
        "details": {
            "coding": [
                {
                    "system": "http://hl7.org/fhir/operation-outcome",
                    "code": "MSG_CANT_PARSE_CONTENT"
                }
            ],
            "text": "text"
        }
    }
]

}

你可以从FHIR build 3.4 json schemas获取json架构

验证时我的主要挑战是了解真正的源问题。例如,在这种情况下,我已将 de“code”字段更改为“codeerror”,但在验证时,我主要得到以下错误列表:

{ keyword: 'additionalProperties',
dataPath: '',
schemaPath: '#/additionalProperties',
params: { additionalProperty: 'issue' },
message: 'should NOT have additional properties' },

我确实知道它是否是正常输出,或者此行为的来源是 json 架构或 ajv,但我希望收到一些消息,例如“无效字段代码错误,预期代码之一”。

为了能够分析完整的输出并获得真正的来源,有什么建议吗?

谢谢。

【问题讨论】:

    标签: jsonschema hl7-fhir ajv


    【解决方案1】:

    从 Draft-7 开始,JSON Schema 没有定义输出格式,因此这个输出(错误或其他)由库定义,在本例中为 ajv。

    我们(JSON Schema)目前正在考虑是否应该定义标准输出格式,目前跟踪a github issue

    在您的错误实例中,附加属性 false 会阻止附加属性,因此您必须检查您的 JSON 架构以及您为其添加了附加属性的实例。尽管在这种情况下,您已经知道,因为您正在测试。

    如果您正在寻找一种以编程方式获取此信息的方法,则没有这样做的标准。

    如果您要求使用 documented API,ajv 可能会提供一些额外的错误信息。看起来它应该为您提供一些您提供的更多信息,尽管空的 dataPath 可能正在引用 JSON 实例的根。

    【讨论】:

    • 您好 Relequestual,非常感谢您的扩展回复,虽然我没有得到关于如何在验证 json 资源时更快的解决方案,但现在对我来说更清楚这是源头原因。
    • 您是否发现验证速度很慢? ajv 是最快的之一!
    • 没有任何误解的借口,当我的意思是更快,是验证一个新的 json 资源模板的整个过程。我在一种模式下工作,首先创建基于文本的 json 模板文档,然后验证它,然后在运行时环境中替换值。创建第一个模板花费了我很多时间来处理不明确的验证错误响应。谢谢
    • 好的。我知道根据架构了解您的数据如何无效可能是一个缓慢的过程。您越熟悉 JSON Schema,这就越容易。
    • 您的问题是“如何从 ajv 获得更详细的错误?”你觉得我回答了你的问题吗?在某些情况下,会提供有关验证错误的更多信息,但不会在您目前的情况下提供。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    相关资源
    最近更新 更多