Json 删除Java Lambda响应中的双重编码

Json 删除Java Lambda响应中的双重编码,json,amazon-web-services,aws-lambda,Json,Amazon Web Services,Aws Lambda,获取Lambda响应,如下所示,它是双重编码的 “{\'id\”:“6EE1DDADBDC55EB271289A057DDA82B1\”,“名称\”:“测试\”,“状态名称\”:“初始值\”,“描述\”:“测试描述\”,“类型\”:“下载\”,“创建时间\”:“2018年8月10日下午2:02:02\,“更新时间\”:“2018年8月10日下午2:02:02\” 但是,当我在HandlerRequest(对象输入,上下文)方法下打印它时,它显示良好 {“id”:“6EE1DDABDC5C5EB2

获取Lambda响应,如下所示,它是双重编码的

“{\'id\”:“6EE1DDADBDC55EB271289A057DDA82B1\”,“名称\”:“测试\”,“状态名称\”:“初始值\”,“描述\”:“测试描述\”,“类型\”:“下载\”,“创建时间\”:“2018年8月10日下午2:02:02\,“更新时间\”:“2018年8月10日下午2:02:02\”

但是,当我在HandlerRequest(对象输入,上下文)方法下打印它时,它显示良好

{“id”:“6EE1DDABDC5C5EB271289A057DDA82B1”,“名称”:“测试”,“状态名”:“首字母”, “描述”:“测试描述”,“类型”:“测试”,“创建时间”:“2018年8月10日下午2:02:02”, “更新时间”:“2018年8月10日下午2:02:02”}


有什么解决方案可以使它正确地显示在响应中吗?

您的lambda返回json,它实际上只是一个可以解码的有效json字符串。但是lambda响应也是json。因此,要在lambda响应对象中发送json,它将作为字符串包含。在我看来,将其称为“双重编码”并没有错,正如名称所暗示的那样,您还必须解码两次:一次用于外部json,一次用于内部json


当您从lambda内部打印时,您的响应没有被编码到包含json的对象中,这就是为什么它没有在那里进行双重编码

您的lambda返回json,它实际上只是一个可以解码的有效json字符串。但是lambda响应也是json。因此,要在lambda响应对象中发送json,它将作为字符串包含。在我看来,将其称为“双重编码”并没有错,正如名称所暗示的那样,您还必须解码两次:一次用于外部json,一次用于内部json


当您从lambda内部打印时,您的响应没有被编码到包含json的对象中,这就是为什么它没有在那里进行双重编码

我最近通过更改Lambda函数以返回Java对象解决了这个问题-我创建了一个具有公共get方法的响应类,Lambda运行时将其转换为JSON。没有双重编码的JSON。不确定为什么没有记录下来。

我最近通过更改Lambda函数以返回Java对象解决了这个问题-我创建了一个具有公共get方法的响应类,Lambda运行时将其转换为JSON。没有双重编码的JSON。不知道为什么没有记录在案。

谢谢。我找到了解决这个问题的办法。下面的代码修复了双重编码的问题。导入org.apache.commons.lang.StringEscapeUtils;String decodedJson=StringEscapeUtils.unescapeJava(encodedJson);谢谢我找到了解决这个问题的办法。下面的代码修复了双重编码的问题。导入org.apache.commons.lang.StringEscapeUtils;String decodedJson=StringEscapeUtils.unescapeJava(encodedJson);