我有类似的东西:
set( $userPrefs = ${subscription.getUserPreferences()} )
getUserPreferences()
返回一个字符串,该字符串实际上是一个转义的JSON值。
doing "text" : $userPrefs returns [object]
我看到了一个叫做地图here
的东西如何转换我的数据,如:
$userPrefs = "{\"a\": \"b\",\"c\": \"d\"}"
进入地图?
由于
答案 0 :(得分:0)
这样做的正确方法是在您的上下文中放置一个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反序列化工具。
答案 1 :(得分:0)
我也可以这样做: - )
Test
#set($raw = '{"foo":"bar", "baz":5}')
#set($assign = "$escapetool.getHash()set($map = $raw)")
#evaluate($assign)
Test (must display bar value) : $map.foo