如何在velocity中将字符串转换为贴图

如何在velocity中将字符串转换为贴图,velocity,Velocity,我有点像: set( $userPrefs = ${subscription.getUserPreferences()} ) getUserPreferences()返回一个字符串,该字符串实际上是一个转义的JSON值 doing "text" : $userPrefs returns [object] 我看到一个叫做地图的东西 如何转换我的数据,如: $userPrefs = "{\"a\": \"b\",\"c\": \"d\"}" 在地图上 谢谢正确的方法是在您的上下文中放置一个JS

我有点像:

set( $userPrefs = ${subscription.getUserPreferences()} )
getUserPreferences()
返回一个字符串,该字符串实际上是一个转义的JSON值

doing "text" : $userPrefs returns [object]
我看到一个叫做地图的东西

如何转换我的数据,如:

$userPrefs = "{\"a\": \"b\",\"c\": \"d\"}"
在地图上


谢谢

正确的方法是在您的上下文中放置一个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
但这种方法看起来相当粗糙,加上Velocity文字映射语法并不严格符合JSON,尤其是在转义方面。您应该使用适当的JSON反序列化工具。

Thxs我也可以这样做:-)

Test
#set($raw = '{"foo":"bar", "baz":5}')
#set($assign = "$escapetool.getHash()set($map = $raw)")
#evaluate($assign)
Test (must display bar value) : $map.foo