如何在 freemarker 中通过键值访问 json 值?

How to access json value by key value in freemarker?

有没有办法在 freemarker 中通过键值访问 json 值? json 看起来像这样:

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

我需要这些值才能在方法中使用它们:

localService.method(className, classPK);

我试图通过 ${json.getData()["classPK"]} 直接访问它们。怎么做?

将json赋值给这个变量并尝试以这种方式访问​​

<#-- 来自 JSON 文字的自由标记哈希 --> <#assign getData= {"className":"Lorem Ipsum","classPK":"52293","title":"Test Name"} >

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

您可以使用${variableName.key}。在您的情况下 <#assign data="Your JSON Goes here"?eval> 然后在使用 ${data.className} 访问之后。

此处对包含 JSON 的字符串数据使用 ?eval ,我们将其转换为 Freemarker littral。

有关更多信息,请点击链接:- https://docs.akana.com/ag/processes/process_transform_freemarker.htm https://liferay.dev/blogs/-/blogs/working-with-json-in-freemarker

您可以使用 ?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")}

我不知道哪个是"better",但我更喜欢eval...