如果JSON字段为空,如何将空数组字段附加到JSON中?

时间:2018-05-31 15:02:20

标签: javascript json

我不是很喜欢JavaScript而且我遇到了这个问题(我只能使用纯旧的JS而不是第三方库来解决它。)

我有一个处理JSON对象的JavaScript脚本,在我的脚本中我有:

if(finalResponse.SubSpeciesInfo == null) {
    log.info("NO SUBSPECIES");
    finalResponse.SubSpeciesInfo.SubSpeciesList = [];
}

检查我的原始JSON对象的此属性是否为null:

"SubSpeciesInfo": null

如果我的JSON对象的这个属性为null,则进入if块。

我在这里要做的是附加一个空列表的 SubSpeciesList 子字段。

但是这样它不起作用,我得到了一个错误:

 ERROR {org.apache.synapse.mediators.bsf.ScriptMediator} -  The script engine returned an error executing the inlined js script function mediate {org.apache.synapse.mediators.bsf.ScriptMediator}
com.sun.phobos.script.util.ExtendedScriptException: org.mozilla.javascript.EcmaError: TypeError: Cannot set property "SubSpeciesList" of null to "org.mozilla.javascript.NativeArray@37aa205f" (<Unknown Source>#106) in <Unknown Source> at line number 106
        at com.sun.phobos.script.javascript.RhinoCompiledScript.eval(RhinoCompiledScript.java:68)

有什么问题?我错过了什么?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您需要为数组指定一个具有新属性的对象,因为您尝试使用不存在的属性SubSpeciesList

if (finalResponse.SubSpeciesInfo === null) {
    log.info("NO SUBSPECIES");
    finalResponse.SubSpeciesInfo = { SubSpeciesList: [] };
}

对于没有类型强制的比较,使用更好的===进行严格检查。阅读更多:Strict equality using ===

<强>样本

&#13;
&#13;
var finalResponse = {
  SubSpeciesInfo : null 
}

if(finalResponse.SubSpeciesInfo === null) {
    console.log("NO SUBSPECIES");
    finalResponse.SubSpeciesInfo = {SubSpeciesList : []};
}

console.log(finalResponse);
&#13;
&#13;
&#13;