遍历JSON几种方式

grep

<script type='text/javascript' src="/jquery.js"></script>
<script type="text/javascript">
$().ready(
function(){
var array = [1,2,3,4,5,6,7,8,9];
var filterarray = $.grep(array,function(value){
return value > 5;//筛选出大于5的
});
for(var i=0;i<filterarray.length;i++){
alert(filterarray[i]);
}
for (key in filterarray){
alert(filterarray[key]);
}
}
);
</script>

each

<script type='text/javascript' src="/jquery.js"></script>
<script type="text/javascript">
$().ready(
function(){
var anObject = {one:1,two:2,three:3};//对json数组each
$.each(anObject,function(name,value) {
alert(name);
alert(value);
});
var anArray = ['one','two','three'];
$.each(anArray,function(n,value){
alert(n);
alert(value);
}
);
}
);
</script>

inArray

<script type='text/javascript' src="/jquery.js"></script>
<script type="text/javascript">
$().ready(
function(){
var anArray = ['one','two','three'];
var index = $.inArray('two',anArray);
alert(index);//返回该值在数组中的键值,返回1
alert(anArray[index]);//value is two
}
);
</script>

map

<script type='text/javascript' src="/jquery.js"></script>
<script type="text/javascript">
$().ready(
function(){
var strings = ['0','1','2','3','4','S','6'];
var values = $.map(strings,function(value){
var result = new Number(value);
return isNaN(result) ? null:result;//isNaN:is Not a Number的缩写
}
);
for (key in values) {
alert(values[key]);
}
}
);
</script>

遍历json对象

<script>
var json = [{dd:'SB',AA:'东东',re1:123},{cccc:'dd',lk:'1qw'}];
for(var i=0,l=json.length;i<l;i++){
for(var key in json[i]){
alert(key+':'+json[i][key]);
}
}
</script>

遍历json对象

有如下 json对象:
var obj ={”name”:”冯娟”,”password”:”123456〃,”department”:”技术部”,”sex”:” 女”,”old”:30};
遍历方法:
for(var p in obj){
str = str+obj[p]+’,';
return str;
}
### Python 遍历 JSON 数据的方法 在Python中,遍历JSON数据通常涉及解析JSON字符串为Python对象(通常是字典或列表),然后通过迭代这些对象来访问所需的数据。以下是几种常见的方法及其示例代码。 --- #### 1. **简单遍历 JSON 列表** 如果JSON数据是一个列表,可以直接使用`for`循环进行遍历。 ```python import json # JSON 字符串表示一个列表 json_string = '[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]' data = json.loads(json_string) # 将 JSON 字符串转换为 Python 列表 # 遍历列表中的每个字典 for item in data: print(f"Name: {item['name']}, Age: {item['age']}") # 访问字典中的键值 ``` 这种方法适用于简单的JSON列表结构[^2]。 --- #### 2. **递归遍历复杂 JSON 结构** 对于嵌套层次较深的JSON数据,可以编写递归来遍历所有的键和值。 ```python def traverse_json(obj, depth=0): """递归遍历 JSON 数据""" if isinstance(obj, dict): # 如果是字典 for key, value in obj.items(): print(" " * depth + f"{key}:") traverse_json(value, depth + 1) elif isinstance(obj, list): # 如果是列表 for index, item in enumerate(obj): print(" " * depth + f"[{index}]:") traverse_json(item, depth + 1) else: # 基本类型 print(" " * depth + str(obj)) # 示例 JSON 数据 json_data = ''' { "name": "Company", "employees": [ {"name": "Alice", "age": 25}, {"name": "Bob", "age": 30} ], "address": { "city": "New York", "zip": "10001" } } ''' data = json.loads(json_data) traverse_json(data) ``` 这段代码能够打印出任意嵌套级别的JSON数据结构[^1]。 --- #### 3. **按字段分组存储 JSON 数据** 如果有需求对JSON列表中的某些字段进行分组,可以使用字典实现。 ```python import json # 示例 JSON 数据 data = [ {"name": "John", "age": 25}, {"name": "Jane", "age": 30}, {"name": "David", "age": 25}, {"name": "Alice", "age": 30}, {"name": "Bob", "age": 25} ] grouped_data = {} # 按照 age 字段分组 for item in data: field_value = item["age"] if field_value not in grouped_data: grouped_data[field_value] = [] # 初始化为空列表 grouped_data[field_value].append(item) # 打印分组结果 print(json.dumps(grouped_data, indent=4)) ``` 此方法可以根据某个字段将数据分类存储到不同组中[^3]。 --- #### 4. **处理含重复键的 JSON 数据** 当JSON数据中含有重复键时,默认的`json.loads()`会覆盖之前的值。为了保留所有键值对,可以自定义钩子函数。 ```python from collections import defaultdict def my_obj_pairs_hook(pairs): """自定义钩子函数,用于处理重复键""" result = defaultdict(list) for key, value in pairs: result[key].append(value) return result # 示例 JSON 数据 json_string = '{"key": "value1", "key": "value2"}' data = json.loads(json_string, object_pairs_hook=my_obj_pairs_hook) # 输出结果 for key, values in data.items(): print(f"{key}: {values}") ``` 这种方式可以防止重复键被覆盖,并将它们存入列表中[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值