# JSON schema validation broken after 5.9.0

**URL:** <https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457>\
**Category:** Bug Report\
**Tags:** bugs-report, katalon-studio\
**Created:** [April 18, 2019, 1:17pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457 "2019-04-18T13:17:50Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Morgan](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/morgan/32/3324_2.png) [@Morgan](https://forum.katalon.com/u/Morgan)\
**Post date:** [April 18, 2019, 1:17pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/1 "2019-04-18T13:17:50Z")

</div>

We’re noticing that the ability to do JSON schema validation using using everit’s JSON validator referenced [here](http://forum.katalon.com/t/how-to-validate-the-json-response-with-expected-json-schema/14029/8) appears to have broken sometime after 5.9.0.

Error message when running the same script in v6.0.4 on:

```auto
org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.NoSuchMethodError: org.json.JSONObject.toMap()Ljava/util/Map;
	at com.api.EveritValidator.invokeMethod(EveritValidator.groovy)
	at com.kms.katalon.core.main.CustomKeywordDelegatingMetaClass.invokeStaticMethod(CustomKeywordDelegatingMetaClass.java:49)
	at Crud_v3.11 - Retrieve campaign, validate JSON.run(Crud_v3.11 - Retrieve campaign, validate JSON:25)
	at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
	at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
	at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:342)
	at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:333)
	at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:312)
	at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:304)
	at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:238)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:114)
	at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:105)
	at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
	at TempTestCase1555593737838.run(TempTestCase1555593737838.groovy:21)
Caused by: java.lang.NoSuchMethodError: org.json.JSONObject.toMap()Ljava/util/Map;
	at org.everit.json.schema.loader.SchemaLoader$SchemaLoaderBuilder.schemaJson(SchemaLoader.java:187)
	at org.everit.json.schema.loader.SchemaLoader.load(SchemaLoader.java:259)
	at org.everit.json.schema.loader.SchemaLoader.load(SchemaLoader.java:245)
	at org.everit.json.schema.loader.SchemaLoader$load.call(Unknown Source)
	at com.api.EveritValidator.verifyJsonSchema(EveritValidator.groovy:23)
	at com.api.EveritValidator.invokeMethod(EveritValidator.groovy)
	at com.kms.katalon.core.main.CustomKeywordDelegatingMetaClass.invokeStaticMethod(CustomKeywordDelegatingMetaClass.java:49)
	at Script1540201659864.run(Script1540201659864.groovy:25)
	... 11 more

```

* * *

Test Case:

```auto
WS.comment("Validate response schema")
responseJson = response.getResponseBodyContent()
CustomKeywords.'com.api.EveritValidator.verifyJsonSchema'(responseJson, schema)

```

EveritValidator:

```auto
class EveritValidator {

	/**
	 * Send request and verify status code
	 * @param stringJson Json to validate
	 * @param stringSchema validation schema
	 */
	@Keyword
	def verifyJsonSchema(String stringJson, String stringSchema) {
		JSONObject rawSchema = new JSONObject(new JSONTokener(stringSchema))
		Schema schema = SchemaLoader.load(rawSchema)

		try {
			schema.validate(new JSONObject(stringJson))
			KeywordUtil.markPassed("Valid schema")
		} catch (ValidationException e) {
			StringBuffer outmessage = new StringBuffer()
			outmessage << e.getMessage() << "\n"
			e.getAllMessages().each { msg -> outmessage << "$msg \n" }
			KeywordUtil.markFailed(outmessage as String)
		}
	}
}

```

Please advise. Again, when we run it on 5.9, no problems at all. Any versions later and it fails with the error listed above.

Thanks!

---

<div class="post-metadata">

**Author:** ![Mihai\_Augustin\_Sarat](https://avatars.discourse-cdn.com/v4/letter/m/dec6dc/32.png) [@Mihai\_Augustin\_Sarat](https://forum.katalon.com/u/Mihai_Augustin_Sarat)\
**Post date:** [April 18, 2019, 1:24pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/2 "2019-04-18T13:24:52Z")

</div>

@Ibus maybe you can help us 😃.

---

<div class="post-metadata">

**Author:** ![Russ\_Thomas](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/russ_thomas/32/11884_2.png) [@Russ\_Thomas](https://forum.katalon.com/u/Russ_Thomas)\
**Post date:** [April 18, 2019, 1:38pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/3 "2019-04-18T13:38:25Z")

</div>

Hey Morgan

Not sure if this will help, I’m not familiar with this API set.

In the linked discussion, @Ibus makes a point that you should use a JSON array object (and not a JSON object object):

 ![image](https://europe1.discourse-cdn.com/katalon/original/2X/a/a211941bd426d6859b7400eeec1bbbf7aff60754.png)

---

<div class="post-metadata">

**Author:** ![Morgan](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/morgan/32/3324_2.png) [@Morgan](https://forum.katalon.com/u/Morgan)\
**Post date:** [April 18, 2019, 1:45pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/4 "2019-04-18T13:45:37Z")

</div>

Hi Russ! I tried that when I was troubleshooting but it didn’t seem to make any difference. Thanks though!

---

<div class="post-metadata">

**Author:** ![Mihai\_Augustin\_Sarat](https://avatars.discourse-cdn.com/v4/letter/m/dec6dc/32.png) [@Mihai\_Augustin\_Sarat](https://forum.katalon.com/u/Mihai_Augustin_Sarat)\
**Post date:** [April 18, 2019, 1:54pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/6 "2019-04-18T13:54:15Z")

</div>

In the linked discussion, the response is retuned as an Array and that’s why you need the JSONArray. This API will return a Json Object.  
The API response is kinda like this:  
{  
“Name”: “test”,  
“DateCreated”: “2019-04-10T12:36:51”,  
“StartDate”: “2019-04-12T21:00:00”,  
“EndDate”: “2019-04-13T20:59:00”,  
“LastUpdated”: “2019-04-15T12:45:32”  
}

---

<div class="post-metadata">

**Author:** ![Ibus](https://avatars.discourse-cdn.com/v4/letter/i/e9a140/32.png) [@Ibus](https://forum.katalon.com/u/Ibus)\
**Post date:** [April 18, 2019, 3:18pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/7 "2019-04-18T15:18:13Z")

</div>

@Morgan @Mihai_Augustin_Sarat  
i will look into it … i no longer have kata installed but will do it tomorrow if the time allows  
most probably with the new version some .jar’s are conflicting …

---

<div class="post-metadata">

**Author:** ![Ibus](https://avatars.discourse-cdn.com/v4/letter/i/e9a140/32.png) [@Ibus](https://forum.katalon.com/u/Ibus)\
**Post date:** [April 18, 2019, 3:20pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/8 "2019-04-18T15:20:23Z")

</div>

@Russ_Thomas is a different case now … but that reminds me that i promised to make a coherent tutorial on this matter … will do one day …  
perhaps i havr to re-write the keyword to make it aware of the response type and choose array or object … that will save some people from headache 🙂

---

<div class="post-metadata">

**Author:** ![Ibus](https://avatars.discourse-cdn.com/v4/letter/i/e9a140/32.png) [@Ibus](https://forum.katalon.com/u/Ibus)\
**Post date:** [April 18, 2019, 3:29pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/9 "2019-04-18T15:29:56Z")

</div>

@Morgan can you please edit your post and re-format the log as /code mark-up to make it more readable? i think the forum plaform is js just using markdown, you have hints in the edit area and preview. pleaaase

---

<div class="post-metadata">

**Author:** ![Russ\_Thomas](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/russ_thomas/32/11884_2.png) [@Russ\_Thomas](https://forum.katalon.com/u/Russ_Thomas)\
**Post date:** [April 18, 2019, 4:10pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/10 "2019-04-18T16:10:17Z")

</div>

> [@Ibus](#):
>
> @Russ_Thomas is a different case now

I guessed as much.

I edited Morgan’s post for code.

---

<div class="post-metadata">

**Author:** ![Russ\_Thomas](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/russ_thomas/32/11884_2.png) [@Russ\_Thomas](https://forum.katalon.com/u/Russ_Thomas)\
**Post date:** [April 18, 2019, 4:11pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/11 "2019-04-18T16:11:00Z")

</div>

> [@Ibus](#):
>
> perhaps i havr to re-write the keyword to make it aware of the response type and choose array or object … that will save some people from headache 🙂

Please do! 😃

---

<div class="post-metadata">

**Author:** ![Ibus](https://avatars.discourse-cdn.com/v4/letter/i/e9a140/32.png) [@Ibus](https://forum.katalon.com/u/Ibus)\
**Post date:** [April 21, 2019, 11:47am UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/12 "2019-04-21T11:47:32Z")

</div>

I did some research, and, as I was afraid the issue is created by the **org.json** library being added into the Katalon since … I don’t know exactly what version.  
E.g, opening a sample project with Katalon 5.9.0 the following is generated into the project .classpath file (stripped content to the lines we are interested):

```auto
...........
	<classpathentry kind="lib" path="D:/Katalon Studio/Schema Validation/Drivers/json-20180130.jar"/>
	<classpathentry kind="lib" path="D:/Katalon Studio/Schema Validation/Drivers/org.everit.json.schema-1.9.2.jar"/>
...........

```

We have only **json-20180130.jar** grabbed by the everit.json as a dep and the test is running just fine.

However, with 6.1.2 we may find as follows:

```auto
...........
<classpathentry kind="lib" path="D:/PRGs/Katalon_Studio_Windows_64-6.1.2/plugins/org.json_20140107.0.0.jar"/>
...........
	<classpathentry kind="lib" path="D:/Katalon Studio/Schema Validation/Drivers/json-20180130.jar"/>
	<classpathentry kind="lib" path="D:/Katalon Studio/Schema Validation/Drivers/org.everit.json.schema-1.9.2.jar"/>
...........

```

Note that, in addition to the org.json lib we import into the project, we have also **org.json\_20140107.0.0.jar** , the one used by katalon himself, which is an older version.  
Unfortunately, Katalon is attempting to load that one … and not the one we need, therefore the error above.

So … we may have to summon other jedi master’s to help us in solving it.  
@devalex88 @kazurayam any idea how can we convince katalon to compile/import at the TestCase runtime the right library from the project and not the one from Kata … and only for the keyword/testcase? Attemtping to replace the library in Katalon himself lead to crash, looking into logs looks like plenty of katalon libs depend on that one …

---

<div class="post-metadata">

**Author:** ![devalex88](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/devalex88/32/336_2.png) [@devalex88](https://forum.katalon.com/u/devalex88)\
**Post date:** [April 21, 2019, 12:20pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/13 "2019-04-21T12:20:41Z")

</div>

I’ve marked this as critical. We will work on this next week.

---

<div class="post-metadata">

**Author:** ![devalex88](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/devalex88/32/336_2.png) [@devalex88](https://forum.katalon.com/u/devalex88)\
**Post date:** [April 21, 2019, 12:21pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/14 "2019-04-21T12:21:07Z")

</div>

Pinned on April 21, 2019, 12:21pm UTC



---

<div class="post-metadata">

**Author:** ![Mihai\_Augustin\_Sarat](https://avatars.discourse-cdn.com/v4/letter/m/dec6dc/32.png) [@Mihai\_Augustin\_Sarat](https://forum.katalon.com/u/Mihai_Augustin_Sarat)\
**Post date:** [April 22, 2019, 9:01am UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/15 "2019-04-22T09:01:26Z")

</div>

@Ibus thanks for looking into it 😄 You deserve a nice cold beer. Maybe next time 😄

---

<div class="post-metadata">

**Author:** ![Morgan](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/morgan/32/3324_2.png) [@Morgan](https://forum.katalon.com/u/Morgan)\
**Post date:** [April 22, 2019, 1:16pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/16 "2019-04-22T13:16:31Z")

</div>

Wow - thanks for looking into this @Ibus! Beers on @Mihai_Augustin_Sarat! 😁

---

<div class="post-metadata">

**Author:** ![Ibus](https://avatars.discourse-cdn.com/v4/letter/i/e9a140/32.png) [@Ibus](https://forum.katalon.com/u/Ibus)\
**Post date:** [April 22, 2019, 4:49pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/17 "2019-04-22T16:49:04Z")

</div>

@Morgan @Mihai_Augustin_Sarat  
let’s wait the issue solved to be.  
strong is the force of dark in java, the path of deps hidden may be, young padawans …

---

<div class="post-metadata">

**Author:** ![Mihai\_Augustin\_Sarat](https://avatars.discourse-cdn.com/v4/letter/m/dec6dc/32.png) [@Mihai\_Augustin\_Sarat](https://forum.katalon.com/u/Mihai_Augustin_Sarat)\
**Post date:** [May 16, 2019, 12:59pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/18 "2019-05-16T12:59:25Z")

</div>

Hey @devalex88,  
Any news on when this is going to be fixed ?  
Thanks.

---

<div class="post-metadata">

**Author:** ![Ibus](https://avatars.discourse-cdn.com/v4/letter/i/e9a140/32.png) [@Ibus](https://forum.katalon.com/u/Ibus)\
**Post date:** [May 16, 2019, 2:45pm UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/19 "2019-05-16T14:45:29Z")

</div>

@Mihai_Augustin_Sarat you can try to use jackson untill this get fixed … altough i don’t remember what are the deps of it …

from various logs posted here and there,i think jackson is already present in katalon. you will have to write a new keyword … but you can figure it out. i think it is still one wroted by me in one of the poc projects …

see: [https://github.com/java-json-tools/json-schema-validator](https://github.com/java-json-tools/json-schema-validator)

use the code samples to figure out how it works:  
[http://java-json-tools.github.io/json-schema-validator/2.2.x/index.html?com/github/fge/jsonschema/examples/package-summary.html](http://java-json-tools.github.io/json-schema-validator/2.2.x/index.html?com/github/fge/jsonschema/examples/package-summary.html)

---

<div class="post-metadata">

**Author:** ![kazurayam](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/kazurayam/32/333_2.png) [@kazurayam](https://forum.katalon.com/u/kazurayam)\
**Post date:** [May 17, 2019, 8:48am UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/20 "2019-05-17T08:48:36Z")

</div>

An alternative is here: [`Justify`](https://github.com/leadpony/justify)

> [@Justify, a JSON Schema Validator, in Katalon Studio](http://forum.katalon.com/t/justify-a-json-schema-validator-in-katalon-studio/25560):
>
> I have made a demo project on GitHub [GitHub - kazurayam/JustifyInKatalonStudio: A Katalon Studio project that demonstrate how to use Leadpony: a JSON Schema validator at https://github.com/leadpony/justify](https://github.com/kazurayam/JustifyInKatalonStudio)Motivation [JSON Schema](https://json-schema.org/) is a vocabulary that allows you to annotate and validate JSON documents. JSON Schema is a nice tool for Web Service testing in Katalon Studio. As the post in Katalon Forum “[JSON Schema validation broken after 5.9.0](http://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457)” reports, [everit-org/json-schema](https://github.com/everit-org/json-schema), a JSON Schema vali…

---

<div class="post-metadata">

**Author:** ![Ibus](https://avatars.discourse-cdn.com/v4/letter/i/e9a140/32.png) [@Ibus](https://forum.katalon.com/u/Ibus)\
**Post date:** [May 17, 2019, 10:26am UTC](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457/21 "2019-05-17T10:26:49Z")

</div>

@kazurayam nice.  
more options, better flexibility.

[Next page](https://forum.katalon.com/t/json-schema-validation-broken-after-5-9-0/23457.md?page=2)
