Forum Discussion

Connectbobby1's avatar
Occasional Contributor
2 years ago

How to compare json response with jdbc response using groovy

I know this question has been asked earlier. The previous response was comparison of two xml responses. Here I need to compare json response which with jdbc's xml response. I have made necessary changes as per my json response and jdbc response. I am still getting error that the assertion has failed. I have been struggling with this for couple of weeks. Please advise.

here is my json response

  "meta": {"api_response_datetime_utc": "2022-09-19T04:11:42.013964Z"},
   "warnings":    [
         "id": "ABC23879",
         "issue_datetime_utc": "2022-03-07T19:21:31Z",
         "expires_datetime_utc": "2025-03-14T19:21:24Z",
         "title": "",
         "sub_title": "",
         "area_summary":          [
            "North Central",
            "North East",
            "West and South Gippsland and East Gippsland forecast districts"
         "phenomena_summary": null,
         "severity_code": ["STD"],
         "issue_type": "Update",
         "type": "WFR",
         "area_state_code": "VIC",
         "link_details": null
         "id": "BAC22000",
         "issue_datetime_utc": "2022-03-07T19:21:29Z",
         "expires_datetime_utc": "2025-03-14T19:21:24Z",
         "title": "Fire Weather",
         "sub_title": "Mallee, Northern Country, North Central and North East forecast districts",
         "area_summary":          [
            "Northern Country",
            "North Central and North East"
         "phenomena_summary": null,
         "severity_code": ["SEV"],
         "issue_type": "Alert",
         "type": "WFW",
         "area_state_code": "VIC",
         "link_details": null

Here is my jdbc response

    <ResultSet fetchSize="0">
        <Row rowNumber="1">
            <WARNINGS_VW.AREA_SUMMARY>Mallee, Northern Country, North Central and North East</WARNINGS_VW.AREA_SUMMARY>
        <Row rowNumber="2">
            <WARNINGS_VW.AREA_SUMMARY>North Central, North East, Central, West and South Gippsland and East Gippsland forecast districts</WARNINGS_VW.AREA_SUMMARY>

 My groovy script

import groovy.json.*
import groovy.xml.*

class Model {
    def id
    def warningType
    def geocodeType
    def geocodeCode
    def areaSummary
    def warningAreaType
    def searchPolygon    

    def buildJdbcData(row) {
        row.with {
            warningType= WARNINGS_VW.WARNING_TYPE
  def buildJsonData(warnings){
    id =
    warningType = warnings.type
 def jdbcResponse = testRunner.testCase.testSteps["JDBC Request"].testRequest.response.contentAsString

 def jsonResponse = testRunner.testCase.testSteps["List1-Request1"].testRequest.response.contentAsString

//Parsing the jdbc and build the jdbc model object list
def results = new XmlSlurper().parseText(jdbcResponse)
def jdbcDataObjects = []
results.ResultSet.Row.each { row -> jdbcDataObjects.add(new Model().buildJdbcData(row))}

//Parsing the json and build the json model object list
def arrayOfTagInfo = new JsonSlurper().parseText(jsonResponse)
def jsonDataObjects = [] 
arrayOfTagInfo.TagInfo.each { tagInfo ->
    jsonDataObjects.add(new Model().buildJsonData(tagInfo))

//sorting the Data before checking for equality

assert jdbcDataObjects == jsonDataObjects, "Comparison of Jdbc XML data and Json data has failed"