遍历JSON 小解

1       var  list1  =  [ 1 , 3 , 4 ];
2      alert(list1[ 1 ]);
3       var  list2  =  [{ " name " : " leamiko " , " xing " : " lin " }];
4      alert(list2[ 0 ][ " xing " ])
5      alert(list2[ 0 ].xing)

 

第二部分:

 

 1  var  value  =  {
 2           " china " :{
 3                   " hangzhou " :{ " item " : " 1 " },
 4                   " shanghai " :{ " item " : " 2 " },
 5                   " chengdu " :{ " item " : " 3 " }
 6          },
 7           " America " :{
 8                   " aa " :{ " item " : " 1 " },
 9                   " bb " :{ " item " : " 2 " }    
10          },
11           " Spain " :{
12                   " dd " :{ " item " : " 1 " },
13                   " ee " :{ " item " : " 2 " },
14                   " ff " :{ " item " : " 3 " }    
15          }
16      };
17  for ( var  countryObj  in  value)
18      {
19          document.write(countryObj  +   " :<br /> " )
20           // 没用的for(var cityObj in value.countryObj)
21           for ( var  cityObj  in  value[countryObj])
22          {
23              document.write( ' &nbsp;&nbsp;&nbsp;&nbsp; '   +  cityObj  +   " <br /> " );
24                   for ( var  itemObj  in  value[countryObj][cityObj])
25                  {
26                      document.write( " &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " +  itemObj  +  value[countryObj][cityObj][itemObj]  + " <br /> " )    
27                  }
28          }    
29      }   

 

解释:
    countryObj 为value对象的一个属性明
    value[countryObj] 为value对象的属性值 这里为一个json对象比如b
    value[countryObj][cityObj]为josn对象b的属性值 它也是一个json对象
    于是 value[countryObj][cityObj]["item"]便可以取到json对象暂时成为c的值
    或者 value[countryObj][cityObj].item
    
    总之分清是json还是array这是很关键的

 

 

第三部分:

 

 1  var  value2  =  {
 2               " china " :[
 3                      { " name " : " hangzhou " " item " : " 1 " },
 4                      { " name " : " shanghai " " item " : " 2 " },
 5                      { " name " : " sichuan " " item " : " 3 " }
 6              ],
 7               " America " :[
 8                      { " name " : " aa " " item " : " 12 " },
 9                      { " name " : " bb " " item " : " 2 " }
10              ],
11               " Spain " :[
12                      { " name " : " cc " " item " : " 1 " },
13                      { " name " : " dd " " item " : " 23 " },
14                      { " name " : " ee " " item " : " 3 " }
15              ]
16      };
17      
18       for  ( var  countryObj  in  value2)
19      {
20          document.write(countryObj  +   " :<br /> " )    
21           for  ( var  cityObj  in  value2[countryObj])
22          {
23                   // 可以用document.write("&nbsp;&nbsp;" + value2[countryObj][cityObj].item + "<br />");
24                  document.write(cityObj  +   " &nbsp;&nbsp; "   +  value2[countryObj][cityObj][ " name " +   " <br /> "  );    
25          }
26      }

 

解释:
    countryObj 为value2对象的属性名
    value2[countryObj] 为value2对象属性值 在本例中它是一个数组
    cityObj 是数组的一个元素,它又是另外一个json对象
    于是,value2[countryObj][cityObj]["name"]就访问到该对象的 name的属性值
    也可以通过 value2[countryObj][cityObj].name 来访问该属性值

 

 

第四部分:

 

 1  var  value2  =  {
 2               " china " :[
 3                      { " name " : " hangzhou " " item " : " 1 " },
 4                      { " name " : " shanghai " " item " : " 2 " },
 5                      { " name " : " sichuan " " item " : " 3 " }
 6              ],
 7               " America " :[
 8                      { " name " : " aa " " item " : " 12 " },
 9                      { " name " : " bb " " item " : " 2 " }
10              ],
11               " Spain " :[
12                      { " name " : " cc " " item " : " 1 " },
13                      { " name " : " dd " " item " : " 23 " },
14                      { " name " : " ee " " item " : " 3 " }
15              ]
16      };
17      
18       for  ( var  countryObj  in  value2)
19      {
20          document.write(countryObj  +   " :<br /> " )    
21           // document.write("&nbsp;&nbsp;" + value2[countryObj].length);
22           for  ( var  i  =   0 ;i  <  value2[countryObj].length; i ++ )
23          {
24              document.write( " &nbsp;&nbsp; "   +  value2[countryObj][i][ " name " +   " <br /> " );    
25          }
26      }

 

解释:
    countryObj value2对象的属性名
    value2[countryObj] 属性值 本例中是一个数组
    value2[countryObj].length 数组的长度.
    value2[countryObj][i]数组的项 == json对象
    
    value2[countryObj][i]["name"] 取得name的值
    也可以用value2[countryObj][i].name 来取得name的值
遍历 JSON 数据结构是处理数据交换和解析时的常见需求。JSON 本质上是一种嵌套的数据格式,通常以键值对(对象)或数组形式表示。不同编程语言提供了不同的方法来实现 JSON 数据的遍历。 ### 使用 Python 遍历 JSON 数据 Python 提供了内置的 `json` 模块用于解析和处理 JSON 数据[^3]。在解析之后,可以使用递归函数遍历 JSON 结构中的所有元素。 #### 示例:将 JSON 字符串转换为 Python 对象并遍历 ```python import json # JSON 字符串 json_str = ''' { "name": "Alice", "age": 25, "skills": ["Python", "JavaScript"], "address": { "city": "New York", "zip": "10001" } } ''' # 解析 JSON 字符串 data = json.loads(json_str) # 定义递归函数遍历 JSON 数据 def traverse_json(obj, indent=0): if isinstance(obj, dict): for key, value in obj.items(): print(' ' * indent + f"Key: {key}") traverse_json(value, indent + 4) elif isinstance(obj, list): for index, item in enumerate(obj): print(' ' * indent + f"Index: {index}") traverse_json(item, indent + 4) else: print(' ' * indent + f"Value: {obj}") # 调用函数 traverse_json(data) ``` 输出结果: ``` Key: name Value: Alice Key: age Value: 25 Key: skills Index: 0 Value: Python Index: 1 Value: JavaScript Key: address Key: city Value: New York Key: zip Value: 10001 ``` ### 使用 JavaScript 遍历 JSON 数据 JavaScript 是 JSON 的起源语言,因此原生支持 JSON 数据的解析与遍历。可以通过递归函数轻松实现 JSON 的深度遍历。 #### 示例:遍历 JSON 对象 ```javascript // JSON 数据 const jsonData = { name: "Bob", age: 30, hobbies: ["reading", "coding"], contact: { email: "bob@example.com", phone: "123-456-7890" } }; // 递归遍历函数 function traverseJson(obj, indent = 0) { if (Array.isArray(obj)) { obj.forEach((item, index) => { console.log(' '.repeat(indent) + `Index: ${index}`); traverseJson(item, indent + 4); }); } else if (typeof obj === 'object' && obj !== null) { for (const key in obj) { console.log(' '.repeat(indent) + `Key: ${key}`); traverseJson(obj[key], indent + 4); } } else { console.log(' '.repeat(indent) + `Value: ${obj}`); } } // 调用函数 traverseJson(jsonData); ``` 输出结果: ``` Key: name Value: Bob Key: age Value: 30 Key: hobbies Index: 0 Value: reading Index: 1 Value: coding Key: contact Key: email Value: bob@example.com Key: phone Value: 123-456-7890 ``` ### 其他语言遍历 JSON 的简要说明 - **Java**:可以使用 `org.json` 或 `Gson` 等库进行 JSON 解析,并通过递归方法遍历对象。 - **C#**:使用 `Newtonsoft.Json`(也称为 Json.NET)库,支持 LINQ 查询和深度遍历。 - **PHP**:使用 `json_decode()` 函数将 JSON 数据转换为 PHP 数组,然后使用 `foreach` 进行遍历。 ### 总结 无论使用哪种编程语言,遍历 JSON 数据的核心在于理解其嵌套结构,并使用递归函数来访问每一层的数据节点。Python 和 JavaScript 提供了简洁的方法来实现这一目标,同时保持代码的可读性和可维护性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值