Как получить доступ к значению json по значению ключа в freemarker? - PullRequest
0 голосов
/ 24 февраля 2020

Есть ли способ получить значение json по значению ключа в freemarker? json выглядит следующим образом:

{"className":"Lorem Ipsum","classPK":"52293","title":"Test Name"}

Мне нужны эти значения, чтобы использовать их в методе:

localService.method(className, classPK);

Я пытался получить к ним доступ напрямую с помощью ${json.getData()["classPK"]}. Как это сделать?

Ответы [ 3 ]

1 голос
/ 24 февраля 2020

Вы можете использовать с помощью ${variableName.key}. В вашем случае <#assign data="Your JSON Goes here"?eval> затем после доступа используйте ${data.className}.

Здесь Используя ?eval на строковых данных, которые включают JSON, мы конвертируем их в Freemarker littral.

Для получения дополнительной информации перейдите по ссылкам: - https://docs.akana.com/ag/processes/process_transform_freemarker.htm https://liferay.dev/blogs/-/blogs/working-with-json-in-freemarker

1 голос
/ 28 февраля 2020

Вы можете использовать? Eval или jsonFactoryUtil (если доступно). Примеры:

<#assign customFieldJson = customField.getData()?eval />
${customFieldJson.className}
${customFieldJson.classPK}
${customFieldJson.title}

или

<#assign customFieldJson = jsonFactoryUtil.createJSONObject(customField.getData()) />
${customFieldJson.getString("className")}
${customFieldJson.getString("classPK")}
${customFieldJson.getString("title")}

Я не знаю, какой из них "лучше", но я предпочитаю eval ...

0 голосов
/ 24 февраля 2020

Назначьте json в эту переменную и попытайтесь получить доступ таким образом

<# - Freemarker ha sh из JSON literal -> <#assign getData = {"className": " Lorem Ipsum "," classPK ":" 52293 "," title ":" Имя теста "}>

$ {getData.className} $ {getData.classPK}
...