bmorata Posted April 22, 2020 Share Posted April 22, 2020 Hi, first of all, I am not an expert using Jasper and JSONQL.I am trying to use it and I get some problems when I write an expression that I need.The input JSON i have is this:{ "customer": { "id" : "Customer_20200305-1623-53ln-RQZX-95hasMTLJWa4", "href": "http://customer-customer-service-care-cd-drop31.ilocpde22.corp.amdocs.com/customerManagement/v1/customer/Customer_20200305-1623-53ln-RQZX-95hasMTLJWa4", "name" : "Amit4598", "status" : "Active", "statusReason": "Reason4", "engagedParty": { "type" : "PartyRef", "refType": "Individual", "id" : "Individual_01101404-0555-442e-8882-aaa2a02205f6", "href" : null, "name" : "givenName645130 familyName610747" } }, "individuals": [ { "id" : "Individual_01101404-0555-442e-8882-aaa2a02205f6", "href": "http://party-individual-service-care-cd-drop31.ilocpde22.corp.amdocs.com/partyManagement/v1/individual/Individual_01101404-0555-442e-8882-aaa2a02205f6", "givenName" : "Rayko", "middleName" : "Stoyanov", "familyName" : "Pepelanov", "formattedName" : "Sr. Rayko Stoyanov Pepelanov", "fullName" : "givenName674627 middleName6042 familyName654554", "preferredGivenName": "preferredGivenName", "birthDate" : "1980-08-18T12:16:47.447Z" }, { "id" : "Individual_01101404-0555-442e-8882-aaa2a0220525", "href": "http://party-individual-service-care-cd-drop31.ilocpde22.corp.amdocs.com/partyManagement/v1/individual/Individual_01101404-0555-442e-8882-aaa2a02205f6", "givenName" : "paco", "middleName" : "Stoyanov", "familyName" : "Pepelanov", "formattedName" : "Sr. Rayko Stoyanov Pepelanov", "fullName". : "givenName674627 middleName6042 familyName654554", "preferredGivenName": "preferredGivenName", "birthDate". : "1980-08-18T12:16:47.447Z" } ]}[/code]What I need is to get the givenName json field from the individuals list whose id field has the same value as the id json field in customer.engagedParty.id.So, I have this expression:individuals.id(@val=="Individual_01101404-0555-442e-8882-aaa2a02205f6")^.givenName[/code]It works, but it has the static value of the id, and I want to get it from customer.engagedParty.id dinamically.I have tried with some expressions but it doesn't work:individuals.id(@val==customer.engagedParty.id)^.givenNameindividuals.id(@val==^^.customer.engagedParty.id)^.givenNameindividuals.id(@val==^.^.customer.engagedParty.id)^.givenNameindividuals.id(@val==$F{id})^.givenName # being the id field the value of customer.engagedParty.idindividuals.id(@val==$P{id})^.givenName # being the id parameter the value of customer.engagedParty.idindividuals.id(@val==$V{id})^.givenName # being the id variable the value of customer.engagedParty.id[/code]I don't know what to do. Please, could you help me to get the correct expression in order to get the id?Thank you. Link to comment Share on other sites More sharing options...
narcism Posted April 23, 2020 Share Posted April 23, 2020 If you are trying to filter inside a field expression, it is not possible. Filtering with values from the same JSON tree it is also not supported.In your case you could filter in a subDataSource that you pass to a list like so:<?xml version="1.0" encoding="UTF-8"?><!-- Created with Jaspersoft Studio version 6.12.2.final using JasperReports Library version 6.12.2-75c5e90a222ab406e416cbf590a5397028a52de3 --><jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Report" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="119c58db-8ae4-4c92-8cd2-16ea09ccb158"> <subDataset name="IndividualsDS" uuid="639a0f17-766f-42f5-bdfe-4157c94becfe"> <field name="givenName" class="java.lang.String"> <property name="net.sf.jasperreports.jsonql.field.expression" value="givenName"/> <fieldDescription><![CDATA[givenName]]></fieldDescription> </field> </subDataset> <queryString language="jsonql"> <![CDATA[customer]]> </queryString> <field name="customerId" class="java.lang.String"> <property name="net.sf.jasperreports.jsonql.field.expression" value="id"/> <fieldDescription><![CDATA[id]]></fieldDescription> </field> <field name="customerName" class="java.lang.String"> <property name="net.sf.jasperreports.jsonql.field.expression" value="name"/> <fieldDescription><![CDATA[name]]></fieldDescription> </field> <field name="customerEngagedPartyId" class="java.lang.String"> <property name="net.sf.jasperreports.jsonql.field.expression" value="engagedParty.id"/> <fieldDescription><![CDATA[engagedPartyId]]></fieldDescription> </field> <background> <band splitType="Stretch"/> </background> <columnHeader> <band height="30" splitType="Stretch"> <staticText> <reportElement x="0" y="0" width="180" height="30" uuid="81411315-5690-4f34-a559-3f792e0aad89"/> <text><![CDATA[Customer Id]]></text> </staticText> <staticText> <reportElement x="180" y="0" width="185" height="30" uuid="1251081f-19ac-46cd-a22e-71159f586b76"/> <text><![CDATA[Customer Name]]></text> </staticText> <staticText> <reportElement x="365" y="0" width="185" height="30" uuid="b1e0c3a6-a04c-4bdd-99f3-f1a1e612a62c"/> <text><![CDATA[individual Name]]></text> </staticText> </band> </columnHeader> <detail> <band height="30" splitType="Stretch"> <textField> <reportElement x="0" y="0" width="180" height="30" uuid="f6957d1f-1d6b-4855-8ced-af36ea456ff0"/> <textFieldExpression><![CDATA[$F{customerId}]]></textFieldExpression> </textField> <textField> <reportElement x="180" y="0" width="185" height="30" uuid="2d38c046-a00f-40a0-8750-fd5c0d59018d"/> <textFieldExpression><![CDATA[$F{customerName}]]></textFieldExpression> </textField> <componentElement> <reportElement x="365" y="0" width="185" height="30" uuid="9e0fdaa7-3cef-4e9c-97a7-715bf5ef499e"/> <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical"> <datasetRun subDataset="IndividualsDS" uuid="72b178d8-0026-4847-9760-ce82b0256e42"> <dataSourceExpression><![CDATA[((net.sf.jasperreports.engine.data.JsonQLDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("^.individuals.*(id == "" + $F{customerEngagedPartyId} + "")")]]></dataSourceExpression> </datasetRun> <jr:listContents height="30" width="185"> <textField> <reportElement x="0" y="0" width="185" height="30" uuid="ddd6c429-74ee-41ea-9914-f9ff4c44a8f3"/> <textFieldExpression><![CDATA[$F{givenName}]]></textFieldExpression> </textField> </jr:listContents> </jr:list> </componentElement> </band> </detail></jasperReport>[/code] Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now