我有一个对象数组$arr
,并且一个对象的属性名为jsonData
,它包含字符串中的json数据,如何将该字符串解析为实际的JSON对象并检索可以说键值为name
的值?我尝试这样做:将字符串解析为JSON
#foreach ($obj in $arr)
#set ($jsonData = "#evaluate(${obj.jsonData})")
$jsonData.get("name") ## <-- not working
#end
我有一个对象数组$arr
,并且一个对象的属性名为jsonData
,它包含字符串中的json数据,如何将该字符串解析为实际的JSON对象并检索可以说键值为name
的值?我尝试这样做:将字符串解析为JSON
#foreach ($obj in $arr)
#set ($jsonData = "#evaluate(${obj.jsonData})")
$jsonData.get("name") ## <-- not working
#end
固定这样的:
#foreach ($obj in $arr)
#set($jsonData = '#set($jsonData = ' + $obj.jsonData + ')')
#evaluate ($jsonData)
$jsonData.get("name") ##<-- works now
#end
我用velocity 1.7
如果在AWS API网关利用速度人在这里结束了,您可以使用AWS”
$ utils.parseJson()将字符串转换为JSON。
请确保您注意您的字符串是否使用单引号或双引号。在解析字符串之前,您可能需要使用$ utils.escapeJavaScipt.replaceAll()。
g.o.a.t,你的回答几乎是正确的;有一个轻微的错字,你想使用$util.parseJson()
,而不是$utils.parseJson()
。即便如此,它对我的帮助非常大,所以谢谢。我会评论你的帖子,但我没有足够的代表。 :(
这主要是AWS lambda(在python)响应模板相关..所以..如果你想返回自定义响应代码与JSON很容易返回JSON在节点js但是当谈到python按照我知道,我们不能提高字典的值。所以..这可能会有帮助。如果你正在做的一样..
raise Exception({"responseCode": 400, "response": "missing :\"recipientCount\""})
它会抛出异常的errorMessage中键和值作为一个字符串。
为了克服这个问题..
添加响应码400 方法响应
正则表达式中合并响应:
.*'responseCode': 400.*
补充身体映射模板为应用程序/ JSON:
$util.escapeJavaScript($input.path('$.errorMessage')).replaceAll("\\'",'\"')
确保你是不是在异常字符串中使用单引号。
错误:
raise Exception({"responseCode": 400, "response": "missing :'recipientCount'"})
右:
raise Exception({"responseCode": 400, "response": "missing :\"recipientCount\""})
我知道这是不是最好的解决办法......但是这是唯一的解决方案,我已经找到。如果你有更好的解决方案,请随意。
这为我修好了!谢谢! –