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'}");