我正在使用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倍
定义打印功能
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"