Извлечение json полей с использованием XSLT - PullRequest
0 голосов
/ 25 марта 2020

Я новичок в XSLT, в настоящее время у меня есть строка json, и мне нужно извлечь определенное поле из строки json. В настоящее время я использую fn: parse- json с map: get, но результат, кажется, пуст.

Ниже приведен образец фрагмента:

<xsl:variable name="json-temp" select="fn:parse-json($json-str)" />

<xsl:variable name="result" select="map:get($json-temp,2)" />

Когда я пытаюсь напечатать результат (или) json - оба эти параметра кажутся пустыми - Может кто-нибудь помочь, пожалуйста, здесь. и дайте мне знать, если я что-то упустил.

json -str переменная имеет следующее значение:

{
"testName":"pppp",
"testID":"1234p",
"testDept":"Dept"
}

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Лучший способ использовать JSON в DataPower - использовать GatewayScript вместо XSLT. Если вам действительно нужно придерживаться XSLT, вы можете попробовать использовать:

<xsl:variable name="jsonx" select="dp:stringToJSONx($json-str)"/>

Оттуда вы можете извлечь нужное поле, используя XPath в результирующем документе JSONx.

0 голосов
/ 25 марта 2020

Вы должны иметь возможность использовать map:get($json-temp, 'testID') (в XPath 3) или $json-temp?testID в XPath 3.1. Я не уверен, какое значение вы хотите извлечь с помощью map:get($json-temp,2), поскольку на карте нет ключа со значением 2, этот вызов имеет смысл только для, например, map { 2: 'foo' } для извлечения, например, foo.

...