我有类似的东西:
set( $userPrefs = ${subscription.getUserPreferences()} )
getUserPreferences()
返回一个字符串,该字符串实际上是转义的 JSON 值。
doing "text" : $userPrefs returns [object]
我看到一个叫做 map 的东西 here
如何转换我的数据,如下所示:
$userPrefs = "{\"a\": \"b\",\"c\": \"d\"}"
进入 map ?
谢谢
最佳答案
执行此操作的正确方法是将 JSON 反序列化器工具放入您的上下文中。
也就是说,如果您可以在上下文中访问 VelocityTools,那么您确实可以使用 $render 工具执行某些操作:
#set($raw = '{"foo":"bar", "baz":5}')
#set($assign = "${esc.hash}set($map = $raw)")
$!render.eval($assign)
#if($map)JSON parsing succeeded: map=$map #else JSON parsong failed #end
但是这种方法看起来相当 hackish,而且 Velocity 文字映射语法并不严格符合 JSON,尤其是在转义方面。您应该使用正确的 JSON 反序列化工具。
关于velocity - 如何将字符串转换为速度图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22240323/