Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RAML文件在Anypoint Studio中引发无效的Json架构响应_Json_Mule_Jsonschema_Anypoint Studio_Raml - Fatal编程技术网

RAML文件在Anypoint Studio中引发无效的Json架构响应

RAML文件在Anypoint Studio中引发无效的Json架构响应,json,mule,jsonschema,anypoint-studio,raml,Json,Mule,Jsonschema,Anypoint Studio,Raml,我在Mule 3.8.1中使用Anypoint Studio 6.2,并添加了一个raml和JSON模式,该模式在api workbench中没有显示错误,但在Anypoint Studio中显示JSON模式无效错误 我发现,如果我从所有链接到raml的Json模式(即raml、traits和types)中删除required字段,那么一切都会正常工作。有办法解决这个问题吗 我使用的所需语法是: "required": [ "Organisation", "Address"

我在Mule 3.8.1中使用Anypoint Studio 6.2,并添加了一个raml和JSON模式,该模式在api workbench中没有显示错误,但在Anypoint Studio中显示JSON模式无效错误

我发现,如果我从所有链接到raml的Json模式(即raml、traits和types)中删除required字段,那么一切都会正常工作。有办法解决这个问题吗

我使用的所需语法是:

"required": [
    "Organisation",
    "Address"
  ],
已更新

我还看到一个
org.mule.common.metadata.parser.json.SchemaException:java.net.MalformedURLException:no protocol:
,在使用json模式创建要在Dataweave中使用的元数据类型时,$ref无法解析:

{
    "id": "http://localhost:8000/schemas/products.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Products",
    "type": "object",
    "properties": {
        "Products": {
            "$ref": "common/text.json"
        }
    },
    "additionalProperties": false
}

谢谢

我也这么做,所以Studio肯定支持它。在没有看到整个JSON模式文件的情况下,我不得不猜测原因,我的假设是,要么没有指定JSON模式版本,要么指定了错误的版本(至少应该是v4,而不是v3,这样才能工作)。以下是我的作品:

{
  "$schema": "http://json-schema.org/draft-04/schema",
  "type": "object",
  "properties": {
    "Organisation": { "type": "string" },
    "Address": { "type": "string" }
  },
  "required": [ "Organisation", "Address" ]
}

关于新添加的$ref,我们也使用它,它似乎由APIKit正确解析(即消息被正确验证),但是我不使用这些模式来创建Dataweave元数据,因此我不能保证它的行为相同(我希望它使用相同的解析器,但不能确定)

Common.json:

{
    "$schema": "http://json-schema.org/draft-04/schema",
    "definitions": {
        "emailAddress": {
            "description": "Basic RegEx for an email address",
            "type": ["string","null"],
            "pattern": "^[a-zA-Z0-9'._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"
        }
    }   
}
Sample.json:

{
    "$schema": "http://json-schema.org/draft-04/schema",
    "type": "object",
    "properties": {
        "email": {
            "$ref": "common.json#/definitions/emailAddress"
        }
    }
}

也许它只支持v3模式。尝试使用put“required”:“true”在每个字段中(这是v3模式格式),我发现当我遵循Pedro的建议时,所有问题都得到了解决,如果我恢复使用所需的数组,则返回错误,因此看起来它目前与v3唯一兼容。我需要做些什么才能将其更新到最新版本?您是否按照Brad的建议将“$schema”:”添加到json模式?是的,根据Pedro的评论和我的回答,您需要指定模式版本4。正如我最初所说,对于我正在进行的项目,这在studio中绝对有效。谢谢。添加$schema能够解决我看到的大多数错误。我还有一个例子,当我使用一个使用$ref创建元数据类型的模式时,它会抛出一个错误,但当我删除引用并直接从文件中添加代码时,它会起作用。你知道是什么导致了这一切吗?我已经用一个失败的示例模式更新了上面的代码。