Ask a Question

how to compare JSON response with JDBC request, when JDBC request contains CDATA string

Gkm
Contributor

Re: how to compare JSON response with JDBC request, when JDBC request contains CDATA string

This is actual JSON string response, and after removing all extra delemeters, I got this JSON

def JSONResponse = ''' {
	"Unit": {
		"Profile ": 12,
		"Devices ": [{
			"Id ": 1,
			"DetailJSON": {
				"Name": "ALPR_1",
				"Profile": {
					"ID": 1,
					"BitRate": 0
				},
				"Index": -1
			},
			"PIPDetailJSON": {
				"Name": "ALPR_2",
				"Profile": {
					"ID": 2,
					"BitRate": 0,
					"Mode": "pip"
				}
			}
		}]
	},
	"UnitID ": 12
}   '''
nmrao
Community Hero

Re: how to compare JSON response with JDBC request, when JDBC request contains CDATA string

@Gkm,

You are looping thru jsonResponseSlurper.Unit which not a JsonArray.

You can identify An array it if enclosed between [ ,]

 

For ex,jsonResponseSlurper.Unit.Devices is an array.



Regards,
Rao.
Gkm
Contributor

Re: how to compare JSON response with JDBC request, when JDBC request contains CDATA string

I just wanted to add all my json response values in array so that I can compare json array with my jdbc array.

How can I do this @nmrao, or is there any other way?

nmrao
Community Hero

Re: how to compare JSON response with JDBC request, when JDBC request contains CDATA string

I am not sure the json response you attached is full or partial. It is difficult to tell Unless full json response available. I believe that you are the best just judge, which elements to loop.


Regards,
Rao.
Gkm
Contributor

Re: how to compare JSON response with JDBC request, when JDBC request contains CDATA string

This is just an example , my original json response has 304 values Smiley Very Happy

I want to assert all the elements of response 

Gkm
Contributor

Re: how to compare JSON response with JDBC request, when JDBC request contains CDATA string

@nmrao, I have multiple values under Unit as provided Profile and UnitID, I got your point able to fetch all values of Unit.devices but unable to fetch values which are directly child of Unit like Profile and UnitID. I have so many values under Unit so yes I want to loop them as well.

nmrao
Community Hero

Re: how to compare JSON response with JDBC request, when JDBC request contains CDATA string

Ok, so basically, your object is not that simple, putting all the values into one class. You may need to have hierarchy of objects in the model class to be able to compare.


Regards,
Rao.
Gkm
Contributor

Re: how to compare JSON response with JDBC request, when JDBC request contains CDATA string

Difficult to manage class , so I just break whole complex thing in sections, loop node and compare , Unit section is remaining in which I have profile , I don't know why it is returning null.

 

log.info jsonResponseSlurper.Unit.Profile

nmrao
Community Hero

Re: how to compare JSON response with JDBC request, when JDBC request contains CDATA string

@Gkm

Based on the sample json, here is I would model the classes (hierarchial approach to create complex data)

 

Sample Json

{
  "Unit": {
    "Profile": 12,
    "Devices": [
      {
        "Id": 1,
        "DetailJSON": {
          "Name": "ALPR_1",
          "Profile": {
            "ID": 1,
            "BitRate": 0
          },
          "Index": -1
        },
        "PIPDetailJSON": {
          "Name": "ALPR_2",
          "Profile": {
            "ID": 2,
            "BitRate": 0,
            "Mode": "pip"
          }
        }
      }
    ]
  },
  "UnitID ": 12
}

Object Modeling

 

class Profile {
  def id
  def bitRate
  def mode
}

abstract class Details {
  def name
  Profile profile
}

class PipDetailJson extends Details {}

class DetailJson extends Details {
  def index
}

class Device {
  def id
  DetailJson dJson
  PipDetailJson pJson
}

class Unit {
  def profile
  List<Device> devices
}

/**top level object **/ class Model { Unit unit def unitId }

 



Regards,
Rao.
cancel
Showing results for 
Search instead for 
Did you mean: