Closed gourav157537 closed 6 months ago
A lot of issues have been resolved in the recent updates. I encourage you to try the 1.3.3 version instead.
You are getting the error Reference abcuri:ref.json/#id cannot be resolved
because your reference is incorrect and there is nothing at that reference.
Given how you have defined your schema in ref.json
.
The reference abcuri:ref.json/#id
should be abcuri:ref.json/#/$defs/id
.
The reference abcuri:ref.json/#date-time
should be abcuri:ref.json/#/$defs/date-time
.
Closing as given the correct $ref
this cannot be reproduced.
package com.networknt.schema;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.junit.jupiter.api.Test;
import com.networknt.schema.SpecVersion.VersionFlag;
public class Issue978Test {
@Test
void test() {
SchemaValidatorsConfig config = new SchemaValidatorsConfig();
config.setFormatAssertionsEnabled(true);
config.setPathType(PathType.JSON_POINTER);
String mainSchemaData = "{\r\n"
+ " \"$schema\": \"http://json-schema.org/draft/2019-09/schema\",\r\n"
+ " \"additionalProperties\": false,\r\n"
+ " \"type\": \"object\",\r\n"
+ " \r\n"
+ " \"properties\": {\r\n"
+ " \"id\": {\r\n"
+ " \"$ref\": \"abcuri:ref.json#/$defs/id\"\r\n"
+ " \r\n"
+ " },\r\n"
+ " \"effectiveTime\": {\r\n"
+ " \"$ref\": \"abcuri:ref.json#/$defs/date-time\"\r\n"
+ " \r\n"
+ " },\r\n"
+ " \"idType\": {\r\n"
+ " \"type\": \"string\",\r\n"
+ " \r\n"
+ " \"enum\": [\r\n"
+ " \"Internal\",\r\n"
+ " \"External\"\r\n"
+ " ]\r\n"
+ " }\r\n"
+ " }\r\n"
+ " }";
String refSchemaData = "{\r\n"
+ " \"$schema\": \"http://json-schema.org/draft/2019-09/schema\",\r\n"
+ " \"additionalProperties\": false,\r\n"
+ " \"type\": \"object\",\r\n"
+ " \"$defs\": {\r\n"
+ " \"id\": {\r\n"
+ " \r\n"
+ " \"type\": \"string\",\r\n"
+ " \"minLength\": 5,\r\n"
+ " \"maxLength\": 100\r\n"
+ " \r\n"
+ " },\r\n"
+ " \"date-time\": {\r\n"
+ " \"type\": \"string\",\r\n"
+ " \"pattern\": \"date-time\"\r\n"
+ " }\r\n"
+ " }\r\n"
+ " }";
Map<String, String> schemas = new HashMap<>();
schemas.put("abcuri:main.json", mainSchemaData);
schemas.put("abcuri:ref.json", refSchemaData);
JsonSchema schema = JsonSchemaFactory
.getInstance(VersionFlag.V201909,
builder -> builder.schemaLoaders(schemaLoaders -> schemaLoaders.schemas(schemas)))
.getSchema(SchemaLocation.of("abcuri:main.json"), config);
String inputData = "{\"id\":\"abcde\",\"idType\":\"Explicit\",\"effectiveTime\":\"2022-02-02T13:00:00Z\"}";
Set<ValidationMessage> messages = schema.validate(inputData, InputFormat.JSON);
System.out.println(messages);
}
}
I want to do of property referring to property of other schema. I am getting below error while trying
Library version
Example to retry.