如何从 Freemarker 中的 JSON 获取值

How to get values from JSON in Freemarker

所以我有一个 JSON 文件或 html 请求,如下所示:

tuStatus:   
          0:
             references:    […]
             progressBar:   {…}
             changeDeliveryPossible:    false
             arrivalTime:   {…}
             tuNo:  "(here is usually a package number)"
             owners:    […]
             history:   
                     0: 
                        date:   "2021-11-11"
                        time:   "12:52:04"
                        evtDscr:    "Package has been deliverd."
                        address:    
                                 countryName:   "Niederlande"
                                 countryCode:   "NL"
                                 city:  ""

我一直想访问 0 位置的 history 部分,并检查包裹是否已送达。要检查这一点,我需要读出 evtDscr 处的字符串。如果包裹已经送达,我想访问 datetime 字符串。 如何通过 freemarker 语言访问变量?

在评论中你说你得到了整个 JSON 作为一个字符串。那么,假设你有最新的 FreeMarker 版本,你可以使用 ?eval_json:

<#assign someParsed = someString?eval_json>

现在您使用 someParsed.tuStatus[0].history[0].evtDscr == "Package has been deliverd." 这样的表达式。 (虽然我猜 evtDscr 值不是很可靠...就像有人修正了其中的拼写错误(应该是“交付ed”),比较不会'没用。)