将文本与 JSON (CDATA) 中的变量与条件语句组合

问题描述 投票:0回答:1

我尝试使用 thymeleaf 构建动态 ld+JSON。在此我使用条件语句,这基本上是有效的。但是,条件语句内的所有变量都不会被解析。

<script type="application/ld+json" >

    /*<![CDATA[*/

    {
      "@context": "https://schema.org",
      "@graph": [
        {
          "@type": "Article",
          "@id": "https://website.de/quack/[[${quack.id}]]/#article",
          "publisher": { "@id": "[[${article.nickname}]]" },
          [( ${article.primaryImage} == null ? '' : '"image": { "@id": "https://website.de/quack/${quack.id}/#primaryimage" },
          "thumbnailUrl": "${article.primaryImage}",')]
          "inLanguage": "[[${quack.language}]]"
        }       
      ]
    };

    /*]]>*/

  </script>

结果:

{...
          "primaryImageOfPage": { "@id": "https://website.de/quack/${quack.id}/#primaryimage" },
          "image": { "@id": "https://website.de/quack/${quack.id}/#primaryimage" },
...}

我错过了什么,将条件语句与语句内的正确解析结合起来?

json if-statement thymeleaf cdata ldjson
1个回答
0
投票

关键字是字面替换

所以最终对我有用的是使用管道而不是单引号,这可以正确解析所有变量:

[( ${article.primaryImage} == null ? '' : |"image": { "@id": "https://website.de/quack/${quack.id}/#primaryimage" },
          "thumbnailUrl": "${article.primaryImage}",| )]
© www.soinside.com 2019 - 2024. All rights reserved.