如何在嵌套JSON结构中查询friends下是否存在favoriteNumber字段
嵌套JSON中筛选friends数组包含favoriteNumber字段的实现方案
以下是不同常用场景下的实现方法:
1. JavaScript(浏览器/Node.js环境)
支持深层嵌套friends数组检查的实现:
// 单条JSON校验函数 function hasFavoriteNumberInFriends(jsonObj) { const friends = jsonObj.friends if (!Array.isArray(friends)) return false for (const friend of friends) { // 校验当前friend是否存在目标字段 if ('favoriteNumber' in friend) return true // 递归检查friend下的friends数组,不需要深层校验可删除此行 if (hasFavoriteNumberInFriends(friend)) return true } return false } // 批量筛选示例 const filteredList = originJsonList.filter(item => hasFavoriteNumberInFriends(item))
2. Python 实现
def has_favorite_number_in_friends(json_obj: dict) -> bool: friends = json_obj.get("friends", []) if not isinstance(friends, list): return False for friend in friends: if "favoriteNumber" in friend: return True # 递归检查深层friends,不需要深层校验可删除此行 if has_favorite_number_in_friends(friend): return True return False # 批量筛选示例 filtered_list = [item for item in origin_json_list if has_favorite_number_in_friends(item)]
3. MongoDB 查询实现(数据存储在MongoDB时直接查询)
仅检查第一层friends数组:
db.collection.find({ "friends": { "$elemMatch": { "favoriteNumber": { "$exists": true } } } })
检查所有层级嵌套的friends数组:
db.collection.find({ "friends.$**.favoriteNumber": { "$exists": true } })
内容的提问来源于stack exchange,提问作者user3461502
相关产品推荐
相关产品推荐

