首页 > 解决方案 > json递归函数不发回完整的Json对象

问题描述

我有以下 JsonObject

let jsonObject = {
  "augmentedReality": {
    "enabled": false,
    "augmentedRealitySettings" : [
      {
        "assetId": 7
      }
    ]
  }
}

我写了一个递归函数,看起来如下

 isAssetId(jsonObject: any) {

for (let key in jsonObject) {

  if (typeof jsonObject[key] === "object") {

    jsonObject[key] =  this.isAssetId(jsonObject[key]);

  } else {
   
    if(key=='assetId'){
      jsonObject[key]=3;

    }} }

return jsonObject;

}

我的目标是更改 jsonObject 中存在的assetId。这个 JSON 只是一个例子,而assetId 可能更深。代码的问题在于,当它成功执行时,它返回以下 JSON 对象,我使用以下内容调用该函数:

jsonObject=  isAssetId(jsonObject);

console.log(jsonObject);

我得到以下结果。

  {
  augmentedReality: { enabled: false, augmentedRealitySettings: [ 
  [Object] ] }
   }
 

Object应该显示它没有对象的数据。我无法弄清楚似乎是什么问题。任何帮助,将不胜感激?

更新:我在这里将代码写入以下站点 奇怪的是它在这里 工作正常,但它不适用于我的打字稿NestJs?现在是什么原因?

标签: javascriptjsonrecursionnestjs

解决方案


问题是函数中的“this”关键字。欲了解更多信息,请查看帖子

let jsonObject = {
  "augmentedReality": {
    "enabled": false,
    "augmentedRealitySettings" : [
      {
        "assetId": 7
      }
    ]
  }
}


var json = isAssetId(jsonObject);

console.log(JSON.stringify(json));

isAssetId(jsonObject) {

for (let key in jsonObject) {

  if (typeof jsonObject[key] === "object") {

    jsonObject[key] =  isAssetId(jsonObject[key]);

  } else {
   
    if(key=='assetId'){
      jsonObject[key]=3;

    }} }

return jsonObject;

}

推荐阅读