I tried to use Nested Data Queries to get a JSON Format response as below :
[
{
"codeClient":"string",
"refCompteFacturation":"string",
"refCommande":"string",
"canalEntree":"string",
"typeCommande":"string",
"prepaye":"string",
"refContrat":"string",
"codeOffre":"string",
"refContratBoutique":"string",
"origineContrat":"string",
"libelleOrigine":"string",
"dateDebut":"DateTime",
"dateFin":"DateTime",
"detailCommande":[
{
"codeProduit":"string",
"prixHT":0,
"prixTTC":0,
"modeRemise":"string",
"remiseEnPourcentage":0,
"montantRemise":0,
"quantite":0,
"demandeInstallation":"string",
"dateDebut":"DateTime",
"dateFin":"DateTime",
"refdemandeTT":"string"
}
]
}
]
This is my configuration i have used :
<query id="consultationDetailCommande" useConfig="mscrm">
<sql><![CDATA[select ***********
where SalesOrderid = :filterQuery ]]></sql>
<result outputType="json">{
"accounts":
{ "account" :
[{
"codeProduit": "$productnumber",
"prixHT": "$PrixHT",
"prixTTC": "$PrixTTC",
"modeRemise": "$ModeRemise",
"remiseEnPourcentage": "$RemisePourcentage",
"montantRemise": "$montantR",
"quantite": "$Quantite",
"demandeInstallation": "$demandeinstallation",
"dateDebut": "$datedebut" ,
"dateFin": "$datefin" ,
"refdemandeTT": "$refDemandeTT",
"SalesOrderid": "$SalesOrderid"
}]
}
}</result>
<param name="filterQuery" sqlType="QUERY_STRING"/>
</query>
<query id="consultationCommande" useConfig="mscrm">
<sql><![CDATA[select ****************
where s.new_typedecommande=1 :filterQuery ]]></sql>
<result outputType="json">
{
"accounts":
{ "account" :
[{
"codeClient":"$new_codeClient",
"SalesOrderid":"$SalesOrderid",
"refCompteFacturation": "$new_comptedefacturationidName",
"refCommande": "$refCommande",
"canalEntree": "$canalEntree",
"typeCommande": "$typedecontrat",
"prepaye": "$prepaye",
"refContrat": "$refContrat",
"codeOffre": "$refOffre",
"refContratBoutique": "$new_referencecontratboutique",
"origineContrat": "$origineContrat",
"libelleOrigine": "$new_revendeurIdName",
"dateDebut": "$new_datedebutducontrat" ,
"dateFin": "$new_datefinducontrat",
"@consultationDetailCommande": "$SalesOrderid->SalesOrderid"
}]
}
}</result>
<param name="filterQuery" sqlType="QUERY_STRING"/>
</query>
but it didn't work and i got errors like below ,so is there any issue in my dataservice configuration :
at org.apache.axis2.json.gson.factory.XmlNodeGenerator.processSchemaType(XmlNodeGenerator.java:167)
at org.apache.axis2.json.gson.factory.XmlNodeGenerator.processElement(XmlNodeGenerator.java:138)
[2023-08-03 17:09:40,812] ERROR {PassThroughHttpSender} - Failed to submit the response org.apache.axis2.AxisFault
at org.wso2.micro.integrator.core.json.JsonStreamFormatter.writeTo(JsonStreamFormatter.java:113)
at org.apache.synapse.transport.passthru.PassThroughHttpSender.submitResponse(PassThroughHttpSender.java:595)
I followed the official documentation :