我有这个简单的类定义:
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\"}"
由于
答案 0 :(得分:2)
似乎你已经证明了一些序列化代码,对于对象文字而言,下游的工作方式与构造函数的工作方式不同!虽然这很糟糕,但你必须做这样的事情:
function your_module_form_alter(&$form, FormStateInterface $form_state, $form_id) {
// test you are altering the correct form so wrap the below in an IF
$form['actions']['submit']['#submit'][] = '_your_module_custom_redirect';
}
function _your_module_custom_redirect($form, FormStateInterface $form_state) {
$form_state->setRedirect('your route name');
}
我想你可以让自己成为一个能够解决这个问题的效用函数。
我会考虑使Flatfield成为一个返回对象文字的普通函数。然后问题就消失了:
exports.handler = (event, context, callback) => {
var test = new FlatField( 103, 'fred' )
callback(null, JSON.parse(JSON.stringify(test)) )
}