Forum Discussion

divergentor's avatar
divergentor
Occasional Contributor
8 years ago

How to parse JSON in javascript

Hello, community.

 

I couldn't find a way to parse JSON in javascript. Could anybody help me?

I casual JS I can use JSON.parse. But it is invalid case for SOAPUI.

 

I know  that for grove it's a lot of examples with JsonSlurper, in my case I'm using only javascript.

 

My scenario:

I have REST request which returns we JSON.

To this request I have added Script Assertion in which I want to check value from JSON response and value from custom property.

 

Thanks in advance.

  • HKosova's avatar
    HKosova
    8 years ago

    SoapUI 5.3 uses an older version of the Rhino engine (1.7R2) that does not support JSON.parse(), but there are a couple of workarounds.

     

    Option 1: use eval()

    var str = '{"foo": "bar"}';
    var obj = eval('(' + str + ')');
    log.info(obj.foo);

     

    Option 2: Update Rhino engine and use JSON.parse()

    1. Download the latest version of Rhino from here:
      https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Download_Rhino
    2. In the <SoapUI>\lib folder, replace js-1.7R2.jar with js-<ver>.jar from the downloaded archive.
    3. Restart SoapUI.

    Now you can use JSON.parse():

    var str = '{"foo": "bar"}';
    var obj = JSON.parse(str);
    log.info(obj.foo);
  • divergentor's avatar
    divergentor
    Occasional Contributor

    Hello, Helen.

     

    I thought about it as a first solution.

    But I need customer property to be incremented.

    I couldn't find any option to increment value from JSONpath.

    That is why i decided that Script Assertion will be the best solution.

     

    For now I did it by adding one additional Script step, in which I take customer property, increment it and write back.
    Then I take it and compare as you show.

     

    But I want to use javascript because it can simplify a lot of things.

    • HKosova's avatar
      HKosova
      SmartBear Alumni (Retired)

      SoapUI 5.3 uses an older version of the Rhino engine (1.7R2) that does not support JSON.parse(), but there are a couple of workarounds.

       

      Option 1: use eval()

      var str = '{"foo": "bar"}';
      var obj = eval('(' + str + ')');
      log.info(obj.foo);

       

      Option 2: Update Rhino engine and use JSON.parse()

      1. Download the latest version of Rhino from here:
        https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino/Download_Rhino
      2. In the <SoapUI>\lib folder, replace js-1.7R2.jar with js-<ver>.jar from the downloaded archive.
      3. Restart SoapUI.

      Now you can use JSON.parse():

      var str = '{"foo": "bar"}';
      var obj = JSON.parse(str);
      log.info(obj.foo);
  • divergentor's avatar
    divergentor
    Occasional Contributor

    Hello.

     

    Thank you for your answer. You save me a lot of time.
    It's exactly what I need.

  • ishan_07's avatar
    ishan_07
    Occasional Contributor

    Hello,

    You can simply use the JavaScript function called JSON.parse() to convert text into javascript object.

    E.x.

    var txt = '{"name":"John", "age":30, "city":"New York"}'
    var obj = JSON.parse(txt);