博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
遍历 JSON JavaScript 对象树中的所有节点
阅读量:5018 次
发布时间:2019-06-12

本文共 2047 字,大约阅读时间需要 6 分钟。

 

我想要遍历 JSON 对象树中,但为何找不到任何一间图书馆。这似乎是不难,但感觉就像重新发明轮子。

在 XML 中有很多教程演示如何遍历 XML DOM 树:(

解决方法 1: 

如果你认为 jQuery 是什么样的

overkill
这种原始的任务,你可以这样做:

1 //your object 2 var o = {  3     foo:"bar", 4     arr:[1,2,3], 5     subo: { 6         foo2:"bar2" 7     } 8 }; 9 10 //called with every property and it's value11 function process(key,value) {12     log(key + " : "+value);13 }14 15 function traverse(o,func) {16     for (i in o) {17         func.apply(this,[i,o[i]]);    18         if (typeof(o[i])=="object") {19             //going on step down in the object tree!!20             traverse(o[i],func);21         }22 }23 24 //that's all... no magic, no bloated framework25 traverse(o,process);

 

解决方法 2: 

JSON 对象是简单 Javascript 对象。这实际上是 JSON 的主张: JavaScript 对象表示法。所以你会遍历 JSON 对象,但是你会选择"穿越"Javascript 对象一般。

Jquery,我会像做

$.each(myJsonObj, function(key,val){    // do something with key and val});

  

您始终可以编写一个函数以递归方式下降到的对象:

 
function traverse(jsonObj) {    if( typeof jsonObj == "object" ) {        $.each(jsonObj, function(k,v) {            // k is either an array index or object key            traverse(v);        }    }    else {        // jsonOb is a number or string    }}

  

这应该是一个好的起点。我强烈建议使用 jQuery 这样的事情,因为他们的实用程序,如在每个循环使编写这样的代码要容易得多。

解决方法 3: 

那里是遍历 JSON 数据支持许多不同的使用情况下的 javascript 的新图书馆。

http://github.com/substack/js-traverse

它适用于所有种类的 JavaScript 对象。它甚至会检测周期。

它也提供了每个节点的路径。

解决方法 4: 

取决于你想做什么。下面是一个示例的遍历 JavaScript 对象树、 打印键和值的它:

function js_traverse(o) {    var type = typeof o     if (type == "object") {        for (var key in o) {            print("key: ", key)            js_traverse(o[key])        }    } else {        print(o)    }}js> foobar = {foo: "bar", baz: "quux", zot: [1, 2, 3, {some: "hash"}]}[object Object]js> js_traverse(foobar)                 key:  foobarkey:  bazquuxkey:  zotkey:  01key:  12key:  23key:  3key:  somehash

  

解决方法 5: 

有缺少} 在上面的导线函数。更正后的版本:

函数 traverse(o,func) {为 (i 在澳) {func.apply(this,[i,o[i]]) ;

如果 (typeof(o[i])=="object") {//going 在对象树中向下一步 !!traverse(o[i],func) ;} } }

转载于:https://www.cnblogs.com/imteach/p/4088613.html

你可能感兴趣的文章
Android Gson深入分析
查看>>
display:flow-root
查看>>
22-reverseString-Leetcode
查看>>
Centos 开机自动联网
查看>>
cocos2dx使用lua和protobuf
查看>>
Codeforces Round #327 (Div. 2)
查看>>
How to install ia32-libs in Ubuntu 14.04 LTS (Trusty Tahr)
查看>>
The Ctrl & CapsLock `problem'
查看>>
Java进阶知识点6:并发容器背后的设计理念 - 锁分段、写时复制和弱一致性
查看>>
Makefile ===> Makefile 快速学习
查看>>
face detection[HR]
查看>>
java性能调优工具
查看>>
C# 其他的Url 文件的路径转化为二进制流
查看>>
cmake使用
查看>>
面向对象高级
查看>>
Bitwise And Queries
查看>>
oracle连接问题ORA-00604,ORA-12705
查看>>
Java从零开始学十三(封装)
查看>>
Python2和Python3中的rang()不同之点
查看>>
lintcode28- Search a 2D Matrix- easy
查看>>