У меня есть данные ответа, и он содержит массив с именем JsonArray, и я хочу изменить его с помощью пользовательского имени, как это сделать?
см. ответ ниже:
<jsonArray>
<jsonElement>
<Title></Title>
<Address1></Address1>
<Address2></Address2>
<Street></Street>
<District></District>
<City></City>
<PostCode></PostCode>
<AdditionalNumber></AdditionalNumber>
<RegionName></RegionName>
<UnitNumber></UnitNumber>
<Latitude></Latitude>
<Longitude></Longitude>
</jsonElement>
<jsonElement>
<Title></Title>
<Address1></Address1>
<Address2></Address2>
<Street></Street>
<District></District>
<City></City>
<PostCode></PostCode>
<AdditionalNumber></AdditionalNumber>
<RegionName></RegionName>
<UnitNumber>8</UnitNumber>
<Latitude></Latitude>
<Longitude></Longitude>
</jsonElement>
</jsonArray>
Могу ли я сделать это с Enrich?
Да, вы можете использовать медиатор обогащения следующим образом.
Замените KEY_NAME любым предпочтительным именем.
<enrich>
<source clone = "true" type = "inline"> KEY_NAME </source>
<target xpath = "json-eval($.jsonArray)" action = "replace" type = "key"/>
</enrich>
Для получения более подробной информации см. - https://apim.docs.wso2.com/en/latest/reference/mediators/enrich-mediator/#example-8-updating-the-key-name-of-an- существующий объект
Поскольку у вас есть XML в качестве ответа, вы не можете использовать здесь функцию замены ключа EnrichMediator. Он поддерживает только замену ключей JSON. Таким образом, вы можете сделать что-то вроде ниже с PayloadFactory Mediator
.
<payloadFactory media-type = "xml">
<format>
<newJsonArray>$1</newJsonArray>
</format>
<args>
<arg evaluator = "xml" expression = "//jsonElement"/>
</args>
</payloadFactory>
Результат
<newJsonArray xmlns = "http://ws.apache.org/ns/synapse">
<jsonElement>
<Title/>
<Address1/>
<Address2/>
<Street/>
<District/>
<City/>
<PostCode/>
<AdditionalNumber/>
<RegionName/>
<UnitNumber/>
<Latitude/>
<Longitude/>
</jsonElement>
<jsonElement>
<Title/>
<Address1/>
<Address2/>
<Street/>
<District/>
<City/>
<PostCode/>
<AdditionalNumber/>
<RegionName/>
<UnitNumber>8</UnitNumber>
<Latitude/>
<Longitude/>
</jsonElement>
</newJsonArray>
Но также я хочу переименовать jsonElement с другим именем
@SulaimanSadoon в этом случае есть дополнительная работа. Возможно, вам придется использовать посредник XSLT или просто посредник Foreach, а затем изменить ключи. Дайте мне знать, если вы не можете понять это. Могу дать образец.
Спасибо за вашу помощь, он продолжает показывать ошибку, когда я adeed type = "key" .