Eclipse v4.11(版本2019-03)-“不是字符串:{“ type”:“ string”,“ format”:“ uri-reference”}“

时间:2019-04-17 04:01:19

标签: eclipse jsonschema

尝试使用最新Eclipse版本(v4.11,2019-03)的JSON模式验证功能时-我在日志中注意到错误:

Eclipse v4.11(版本2019-03)引发有效JSON架构异常

不是字符串:{“ type”:“ string”,“ format”:“ uri-reference”}

获得最小的JSON模式

{
    "$schema": "http://json-schema.org/schema#",
    "$id": "http://localhost/person.schema.json"
}

以及

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "http://localhost/person.schema.json"
}

我尝试将$ id的URI更改为有效的网址(我拥有)-并尝试了有效的本地文件URI位置-但仍然遇到相同的错误。

根据我对JSON Schema规范的阅读-这些是有效的$ schema和$ id值。

Eclipse仍将使用这些$ schema和$ id值来验证模式-并且我还确认了该模式已通过python 3.7验证(使用jsonschema)

例如:

此JSON

{
    "name": "Joe Smith",
    "email": "me@example.com",
    "address": "101 main st",
    "telephone": "206-910-5555",  
    "myColor": "red"
}

可以使用此JSON模式进行验证(但仍会引发异常)

{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "http://localhost/person.schema.json",
    "title": "person",
    "type": "object",
    "properties": {
        "name": {
            "type": "string"
        },
        "email": {
            "type": "string"
        },
        "address": {
            "type": "string"
        },
        "telephone": {
            "type": "string"
        },
        "myColor": {
            "type": "string", 
            "enum": ["red", "blue"],
            "description": "we expect red or blue"
        }
    },
    "additionalProperties": false,
    "required": [
        "name",
        "email",
        "address", 
        "myColor"
    ]
}

“异常堆栈跟踪”显示:

java.lang.UnsupportedOperationException: Not a string: {"type":"string","format":"uri-reference"}
    at org.eclipse.json.provisonnal.com.eclipsesource.json.JsonValue.asString(JsonValue.java:364)
    at org.eclipse.json.provisonnal.com.eclipsesource.json.JsonObject.getString(JsonObject.java:643)
    at org.eclipse.json.impl.schema.JSONSchemaNode.resolveReferences(JSONSchemaNode.java:88)
    at org.eclipse.json.impl.schema.JSONSchemaNode.resolveReferences(JSONSchemaNode.java:81)
    at org.eclipse.json.impl.schema.JSONSchemaNode.(JSONSchemaNode.java:48)
    at org.eclipse.json.impl.schema.JSONSchemaDocument.(JSONSchemaDocument.java:31)
    at org.eclipse.wst.json.schemaprocessor.internal.JSONSchemaProcessor.getSchema(JSONSchemaProcessor.java:57)
    at org.eclipse.wst.json.core.internal.schema.SchemaProcessorRegistryReader.getSchemaDocument(SchemaProcessorRegistryReader.java:84)
    at org.eclipse.wst.json.core.internal.validation.eclipse.Validator.validate(Validator.java:133)
    at org.eclipse.wst.json.core.internal.validation.eclipse.Validator.validate(Validator.java:112)
    at org.eclipse.wst.json.core.internal.validation.core.AbstractNestedValidator.validate(AbstractNestedValidator.java:283)
    at org.eclipse.wst.json.core.internal.validation.core.AbstractNestedValidator.validateInJob(AbstractNestedValidator.java:154)
    at org.eclipse.wst.json.ui.internal.validation.DelegatingSourceValidator.validate(DelegatingSourceValidator.java:239)
    at org.eclipse.wst.sse.ui.internal.reconcile.validator.ReconcileStepForValidator.validate(ReconcileStepForValidator.java:252)
    at org.eclipse.wst.sse.ui.internal.reconcile.validator.ReconcileStepForValidator.reconcileModel(ReconcileStepForValidator.java:210)
    at org.eclipse.jface.text.reconciler.AbstractReconcileStep.reconcile(AbstractReconcileStep.java:92)
    at org.eclipse.wst.sse.ui.internal.reconcile.validator.ValidatorStrategy.reconcile(ValidatorStrategy.java:270)
    at org.eclipse.wst.sse.ui.internal.reconcile.DocumentRegionProcessor.process(DocumentRegionProcessor.java:323)
    at org.eclipse.wst.sse.ui.internal.reconcile.StructuredRegionProcessor.process(StructuredRegionProcessor.java:260)
    at org.eclipse.wst.sse.ui.internal.reconcile.DirtyRegionProcessor$BackgroundThread.run(DirtyRegionProcessor.java:694)

不应为此抛出异常。

对于抛出异常的原因,我感到有些困惑(缺少明显的东西?)。 在深入研究JDK源代码之前-想知道是否有人遇到过这个问题吗?

2019-04-17更新: 错误提交给Eclipse项目

https://bugs.eclipse.org/bugs/show_bug.cgi?id=546541

2019-04-20更新:

其他测试显示以下内容

通过将@schema字符串值更改为

$schema": "http://json-schema.org/draft-04/schema#",

似乎不再抛出异常。

但是,当我将字符串更改为以下任意一项时:

"$schema": "http://json-schema.org/draft-05/schema#",

"$schema": "http://json-schema.org/draft-06/schema#",

日志中显示了不同的错误消息-引发了不同的异常。

注意:有关我的Eclipse错误提交链接的更多信息,请参见上文。

0 个答案:

没有答案