【问题标题】:aws lambda node js returns escaped JSON for object instanceaws lambda node js为对象实例返回转义的JSON
【发布时间】:2017-11-05 04:35:10
【问题描述】:

我有这个简单的类定义:

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\"}"

?

谢谢

【问题讨论】:

  • 您似乎已经证明,序列化程序对对象文字的工作方式与对函数的工作方式不同!
  • 好的,谢谢。那我该如何解决呢?

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


【解决方案1】:

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

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}
}

【讨论】:

    猜你喜欢
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    相关资源
    最近更新 更多