Apigee中JavaScript报错:Cannot set property of undefined问题求助
问题分析与解决
错误原因
报错TypeError: Cannot set property "case" of undefined的核心原因是:你解析后的Backend_Response对象中不存在test属性,直接尝试给Backend_Response.test.case赋值时,Backend_Response.test是undefined,而undefined无法设置子属性。
修正方案
你需要先确保Backend_Response.test是一个有效的对象,再给其case属性赋值。以下是两种可行的修正代码:
方案1:安全初始化test对象(兼容原响应已有test的情况)
如果原响应中可能已经存在test属性(但可能不是对象),可以先判断并初始化:
var Backend_Response = JSON.parse(context.getVariable('response.content')); // 若test不存在或不是对象,则初始化为空对象 if (!Backend_Response.test || typeof Backend_Response.test !== 'object') { Backend_Response.test = {}; } Backend_Response.test.case = 120; context.setVariable('response.content', JSON.stringify(Backend_Response));
方案2:直接创建test对象(确定原响应无test属性时使用)
如果确定原响应里没有test属性,可直接创建包含case的对象:
var Backend_Response = JSON.parse(context.getVariable('response.content')); Backend_Response.test = { case: 120 }; context.setVariable('response.content', JSON.stringify(Backend_Response));
验证效果
执行修正后的代码后,响应内容会被修改为你期望的结构:
{ "Primary": "Status", "test": { "case": 120 } }
内容的提问来源于stack exchange,提问作者Sridhar Adurthi
相关产品推荐
相关产品推荐

