Home > database >  RestAssured JsonPath: Issue with getting data from json?
RestAssured JsonPath: Issue with getting data from json?

Time:02-19

I need to know how to get this output -

JSON DOC - { "status": "E000", "customerId": "VjAxI2VhNzg5ZmJlLWIyNjAtNGZlOS1iZDNkLTdjMmU1MjA2ZmVhZA", "merchantId": "1", "cards": [ { "cardType": "DEBIT", "cardIssuer": "AXIS", "cardBrand": "MASTERCARD", "nickName": "", "expired": "false", "cardMigrationStatus": "OPEN", "tur": null, "category": null }, { "cardType": "CREDIT", "cardIssuer": "ICICI Bank", "cardBrand": "MASTERCARD", "nickName": "", "expired": "false", "cardMigrationStatus": "OPEN", "tur": null, "category": null }, { "cardType": "CREDIT", "cardIssuer": "HDFC Bank", "cardBrand": "MASTERCARD", "nickName": "", "expired": "false", "cardMigrationStatus": "OPEN", "tur": null, "category": null }, { "cardType": "CREDIT", "cardIssuer": "ICICI Bank", "cardBrand": "VISA", "nickName": "", "expired": "false", "cardMigrationStatus": "OPEN", "tur": null, "category": null }, { "cardType": "DEBIT", "cardIssuer": "Punjab National Bank", "cardBrand": "MASTERCARD", "nickName": "", "expired": "false", "cardMigrationStatus": "OPEN", "tur": null, "category": null }, { "cardType": "CREDIT", "cardIssuer": "ICICI Bank", "cardBrand": "MASTERCARD", "nickName": null, "expired": null, "cardMigrationStatus": "DONE", "tur": null, "category": null } ], "status_mssg": null }

I want this output -

[ { "cardType": "DEBIT", "cardIssuer": "AXIS", "cardBrand": "MASTERCARD", "nickName": "", "expired": "false", "cardMigrationStatus": "OPEN", "tur": null, "category": null }, { "cardType": "CREDIT", "cardIssuer": "ICICI Bank", "cardBrand": "MASTERCARD", "nickName": "", "expired": "false", "cardMigrationStatus": "OPEN", "tur": null, "category": null }, { "cardType": "CREDIT", "cardIssuer": "HDFC Bank", "cardBrand": "MASTERCARD", "nickName": "", "expired": "false", "cardMigrationStatus": "OPEN", "tur": null, "category": null }, { "cardType": "DEBIT", "cardIssuer": "Punjab National Bank", "cardBrand": "MASTERCARD", "nickName": "", "expired": "false", "cardMigrationStatus": "OPEN", "tur": null, "category": null } ]

I am using this -

jsonPathValidator.getString("$.cards[?(@.cardMigrationStatus == 'OPEN' && @.cardBrand == 'MASTERCARD')]");

but not getting the output.

CodePudding user response:

try this

var result = jsonPath(json, "$.cards[?(@.cardMigrationStatus == 'OPEN' && @.cardBrand == 'MASTERCARD')]");

result

[
  {
    "cardType": "DEBIT",
    "cardIssuer": "AXIS",
    "cardBrand": "MASTERCARD",
    "nickName": "",
    "expired": "false",
    "cardMigrationStatus": "OPEN",
    "tur": null,
    "category": null
  },
  {
    "cardType": "CREDIT",
    "cardIssuer": "ICICI Bank",
    "cardBrand": "MASTERCARD",
    "nickName": "",
    "expired": "false",
    "cardMigrationStatus": "OPEN",
    "tur": null,
    "category": null
  },
  {
    "cardType": "CREDIT",
    "cardIssuer": "HDFC Bank",
    "cardBrand": "MASTERCARD",
    "nickName": "",
    "expired": "false",
    "cardMigrationStatus": "OPEN",
    "tur": null,
    "category": null
  },
  {
    "cardType": "DEBIT",
    "cardIssuer": "Punjab National Bank",
    "cardBrand": "MASTERCARD",
    "nickName": "",
    "expired": "false",
    "cardMigrationStatus": "OPEN",
    "tur": null,
    "category": null
  }
]

CodePudding user response:

No, it uses GPath to extract the value, not jayway jsonpath.

Syntax:

.getString("cards.findAll {it.cardMigrationStatus == 'OPEN' && it.cardBrand == 'MASTERCARD'}");

or

.getList("cards.findAll {it.cardMigrationStatus == 'OPEN' && it.cardBrand == 'MASTERCARD'}");
  • Related