我有这个简单的类定义:
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/