如何遍历嵌套对象的所有键和值?

 雪狱冰魂_520 发布于 2022-12-31 11:59

我正在使用javascript(在服务器端和客户端)开发Web应用程序.我作为json发送来回数据,我希望能够在另一方面解析它.问题是我内部有几层嵌套对象,所以这就是我被困住的地方.例如,我发送以下数据:

var data = {};
data.title = "My Title";
data.metric = {
   fact : "Malicious code detected",
   technique : "XSS"
};
data.subject = {
   userType : "ADMIN",
   userName : "Jack",
   clientNumber : "000",
   terminal : "192.168.1.1"
};
data.context = {
   environment : {
      session : "00",
      hostname : "mainServer",
      sysType : "production"
   },
   resource : {
      wpt : "DIA",
      pid : "1024"
   }
};

另一方面,当我收到它时,我只想完全遍历此对象,并打印其内容.我在stackoverflow上看到了很多类似的问题,但没有一个有用.这是我到目前为止所做的:

function display(data) {
    var resp = "";
    var prop = null;
    var dataJSON = JSON.parse(data);

    for (prop in dataJSON) {
        if (patternJSON.hasOwnProperty(prop)) {
            resp += "obj" + "." + prop + " = " + dataJSON[prop] + "\n";
        }
    }
    return resp;
}

但我不知道如何让它自动更深入,无论级别多少.有人能指出我正确的方向吗?任何帮助将不胜感激!10倍

1 个回答
  • 定义打印功能

    function print(obj, prefix) {
      prefix = prefix || 'obj';
      return Object.keys(obj).reduce(function(acc, key){
          var value = obj[key];
          if(typeof value === 'object') { 
              acc.push.apply(acc, print(value, prefix + '.' + key));
          }
          else { 
              acc.push(prefix + '.' + key + ' = ' + value);
          }
          return acc;
      }, []);
    }
    

    并像这样使用它print(data).join('\n').

    "obj.title = My Title
    obj.metric.fact = Malicious code detected
    obj.metric.technique = XSS
    obj.subject.userType = ADMIN
    obj.subject.userName = Jack
    obj.subject.clientNumber = 000
    obj.subject.terminal = 192.168.1.1
    obj.context.environment.session = 00
    obj.context.environment.hostname = mainServer
    obj.context.environment.sysType = production
    obj.context.resource.wpt = DIA
    obj.context.resource.pid = 1024"
    

    2022-12-31 12:01 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有