1

I am making a API call which will return JSON in the body and I want to compare JSON object with a String. How can I do that?

API res.body returns following JSON object:

{
    "name": "tenant_tree",
    "documents": [
        {
            "tags": [],
            "scope": "all",
            "tenant_id": "0",   
            "id": "9dd2c5a5-2de2-4ac8-b195-04290f83b6fb",
            "version": 1,     
            "description": "",
            "name": "0",
            "grouping": "",
            "perm_read": "all",
            "perm_write": "all",
            "version_author": "dg",
            "version_date": 1470324147050,
            "is_current": true,
            "dependencies_guid": [""],
            "dependencies_name": [""],
            "display_name": "system"
        },
 }

I want to compare something like expect(res.body).toMatch('"name": "0"'); but this fails.

NatNgs
  • 874
  • 14
  • 25
ssharma
  • 935
  • 2
  • 19
  • 43

2 Answers2

4

Don't use string comparisons or substring in a string checks here. You are dealing with JSON which has structure and its own syntax rules. Compare objects instead. Here is how you can check the value corresponding to the name key:

var obj = JSON.parse(res.body);
expect(obj.name).toEqual("0");

Also, jasmine-matchers package has some advanced object matchers, check them out.

alecxe
  • 462,703
  • 120
  • 1,088
  • 1,195
  • Hi @alecxe `JSON.parse(res.body)` gives me error `Unexpected token o` and I tried `JSON.stringify(res.body)` which gives me error : `undefined to equal 0` – ssharma Aug 04 '16 at 17:41
1

I am able to compare json values in the API response body by:

expect(res.body.name).toEqual("0")

No need of parsing the response.

Refereed link : JSON.Parse,'Uncaught SyntaxError: Unexpected token o

Community
  • 1
  • 1
ssharma
  • 935
  • 2
  • 19
  • 43