json - aws lambda node js返回对象实例的转义JSON

标签 json node.js amazon-web-services aws-lambda

我有这个简单的类定义:

function FlatField(id, content) {

  if ( content === undefined ) content = '';

  this.id = id;
  this.content = content;

}

在AWS lambda中,为什么会出现以下代码

exports.handler = (event, context, callback) => {
    var test = { id: 103, content: "fred" };
    callback(null, test );
};

返回以下干净的 JSON

{
  "id": 103,
  "content": "fred"
}

而下面的代码

exports.handler = (event, context, callback) => {
    var test = new FlatField( 103, 'fred' );
    callback(null, test );
};

将返回以下转义的 JSON

"{\"id\":103,\"content\":\"fred\"}"

谢谢

最佳答案

看来您已经证明下游的一些序列化代码对于对象文字与构造函数的工作方式不同!虽然这很恶心,但你必须这样做:

exports.handler = (event, context, callback) => {
    var test = new FlatField( 103, 'fred' )
    callback(null, JSON.parse(JSON.stringify(test)) )
}

我想你可以为自己创建一个实用函数来处理这个问题。

我会考虑使 Flatfield 成为一个返回对象文字的普通函数。然后问题就消失了:

function flatField(id, content) {
  if ( content === undefined ) content = ''
  return {id,content}
}

关于json - aws lambda node js返回对象实例的转义JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47100402/

相关文章:

java - 如何更改从 JSON Schema 生成的 POJO 的格式?

json - 使用jq解析数组并映射到字符串

json - "Value of type [Shelter] has not member ' 名称 '"

amazon-web-services - 在进行应用程序开发时,我可以使用 "aws-toolkit for VSCode"安全地保存我的凭据吗?

php - 自动加载 bitbucket 存储库 + composer.json

javascript - EBUSY : resource busy or locked, lstat 'C:\hiberfil.sys'

python - Windows 8 : `node-gyp rebuild` Exit status 1 installing contextify as dependency of zombie

PHP cURL 请求正文在 Node.js 中未定义

amazon-web-services - AWS Hook-EnactAppDeploy : Command hooks failed

java - 如何读取 Amazon S3 中的文件内容