0
votes

\import Files.Payload; import io.restassured.path.json.JsonPath;

public class complexJsonParse {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
    
    JsonPath js=new JsonPath(Payload.CoursePrice());
    
    int count=js.get("courses.size()");
    System.out.println(count);
    
    
    
}

}

Error is

Exception in thread "main" io.restassured.path.json.exception.JsonPathException: Failed to parse the JSON document at io.restassured.path.json.JsonPath$ExceptionCatcher.invoke(JsonPath.java:1002) at io.restassured.path.json.JsonPath$4.doParseWith(JsonPath.java:967) at io.restassured.path.json.JsonPath$JsonParser.parseWith(JsonPath.java:1047) at io.restassured.path.json.JsonPath.get(JsonPath.java:202) at complexJsonParse.main(complexJsonParse.java:12) Caused by: groovy.json.JsonException: Lexing failed on line: 2, column: 6, while reading 'p', no possible valid JSON value or punctuation could be recognized. at groovy.json.JsonLexer.nextToken(JsonLexer.java:86) at groovy.json.JsonLexer$nextToken.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:130) at io.restassured.internal.path.json.ConfigurableJsonSlurper.parseObject(ConfigurableJsonSlurper.groovy:227) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.codehaus.groovy.runtime.callsite.PlainObjectMetaMethodSite.doInvoke(PlainObjectMetaMethodSite.java:43) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:193) at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:61) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:185) at io.restassured.internal.path.json.ConfigurableJsonSlurper.parse(ConfigurableJsonSlurper.groovy:105) at io.restassured.internal.path.json.ConfigurableJsonSlurper$parse.callCurrent(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:171) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:185) at io.restassured.internal.path.json.ConfigurableJsonSlurper.parseText(ConfigurableJsonSlurper.groovy:83) at io.restassured.path.json.JsonPath$4$1.method(JsonPath.java:965) at io.restassured.path.json.JsonPath$ExceptionCatcher.invoke(JsonPath.java:1000) ... 4 more

1
Seems to be invalid JSON: Lexing failed on line: 2, column: 6, while reading 'p', no possible valid JSON value or punctuation could be recognized. Unfortunately, your question does not show the JSON. - howlger
{ "courses": [ { "title": "Selenium Python", "price": 50, "copies": 6 }, { "title": "Cypress", "price": 40, "copies": 4 }, { "title": "RPA", "price": 45, "copies": 10 } ], "dashboard": { "purchaseAmount": 910, "website": "rahulshettyacademy.com" } } - Alpana Upadhyay

1 Answers

0
votes

Try it like this using getInt()

import io.restassured.path.json.JsonPath;

class Main {
  public static void main(String[] args) {
    JsonPath jsonPath = JsonPath.from("{ \"courses\": [ { \"title\": \"Selenium Python\", \"price\": 50, \"copies\": 6 }, { \"title\": \"Cypress\", \"price\": 40, \"copies\": 4 }, { \"title\": \"RPA\", \"price\": 45, \"copies\": 10 } ], \"dashboard\": { \"purchaseAmount\": 910, \"website\": \"rahulshettyacademy.com\" } }");
    
    int count=jsonPath.getInt("courses.size()");
    System.out.println(count);
  }
}

This is a minimal working sample. It outputs: 3