Forum Discussion

fajosa's avatar
fajosa
New Contributor II
4 years ago
Solved

Remove json key value from document based on condition

Greetings!

Is there a way we can use the mapper to remove “upperlimit” key value from the document, whenever “ApprovalType”==“Greater than equal to” and ignore it if “ApprovalType”==“Between”??

Appreciate your help!!

Thanks,
F.

  • Yes, it is possible to map the upperlimit to the lowerlimit, you can try with the following expression:

    jsonPath($, "Project[*]").map(val => val.ApporvalType.toLowerCase() == "greater than equal to" ? val.extend({lowerlimit: val.upperlimit}).filter((v, k) => k != "upperlimit") : val)
    

    Here I’m using the extend() method, with this you can add a specific field to the object or overwrite an existing one with a new value. In this case the upperlimit value will be assigned to the lowerlimit field, resulting in overwrite of that same field.

4 Replies

  • Hi @fajosa,

    Yes, you can remove that field, we will need to iterate over the Project field since it is an array, try with the following expression:

    jsonPath($, "Project[*]").map(val => val.ApporvalType.toLowerCase() == "greater than equal to" ? val.filter((v, k) => k != "upperlimit") : val)
    

    This will remove the upperlimit field if ApprovalType is “Greater than equal to” otherwise it will ignore it.

    • fajosa's avatar
      fajosa
      New Contributor II

      That worked!! Thank you @j.angelevski

      Also, is it possible we can map the upperlimit to the lowerlimit?

      so that whenever, ApprovalType ==“Greater than equal to”, $lowerlimit should have the value of $upperlimit which works along with the filter out of upperlimit.

      Appreciate your help @j.angelevski 😀

      Thanks,
      F.

      • j_angelevski's avatar
        j_angelevski
        Contributor III

        Yes, it is possible to map the upperlimit to the lowerlimit, you can try with the following expression:

        jsonPath($, "Project[*]").map(val => val.ApporvalType.toLowerCase() == "greater than equal to" ? val.extend({lowerlimit: val.upperlimit}).filter((v, k) => k != "upperlimit") : val)
        

        Here I’m using the extend() method, with this you can add a specific field to the object or overwrite an existing one with a new value. In this case the upperlimit value will be assigned to the lowerlimit field, resulting in overwrite of that same field.