You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python遍历JSON对象数组 检索指定位置的目标字符串

Python实现JSON指定节点的字符串存在性校验

你的场景不需要做全量JSON递归遍历,目标节点路径规则固定为最外层用户标识键 -> 对应用户下的帖子分类键 -> 存储字符串的数组,直接按键索引定位即可,实现逻辑如下:

  • 先保证JSON格式合法:你提供的示例JSON存在数组元素缺失逗号、数组末尾多余逗号的语法错误,实际使用前需要修正,否则JSON解析阶段会直接报错
  • 用Python内置json模块把JSON字符串/本地JSON文件加载为Python字典结构
  • 增加边界判断:依次校验用户标识是否存在、对应帖子分类是否存在,避免触发KeyError异常
  • 定位到目标数组后,直接用in运算符判断目标字符串是否存在于数组中

完整可运行代码

import json

# 加载JSON数据:以下为修正语法错误后的示例JSON,实际使用替换为你的数据源
json_content = '''
{
   "user1": {
    "posts": [
     "hello",
     "hello you",
     "Hello awesome"
     ],
    "yesterday_posts": [
     "hi",
     "hi you",
     "Hi awesome"
     ]
   },
    "user2": {
     "post": [
     "awesome",
     "help",
     "works"
     ],
    "postfrom2012": [
     "hi awesome",
     "hi help",
     "hi works"
     ]
   }
}
'''
# 如果是读取本地JSON文件,替换为以下写法:
# with open("your_data.json", "r", encoding="utf-8") as f:
#     data = json.load(f)
data = json.loads(json_content)

# 业务入参
user = "user1"
post_name = "yesterday_posts"
target_string = "hi you"

# 校验函数
def is_string_exist(data: dict, user_id: str, post_cat: str, target: str) -> bool:
    # 校验用户是否存在
    if user_id not in data:
        return False
    user_posts = data[user_id]
    # 校验帖子分类是否存在
    if post_cat not in user_posts:
        return False
    # 定位到目标数组做匹配
    return target in user_posts[post_cat]

# 执行校验
check_result = is_string_exist(data, user, post_name, target_string)
print(check_result)  # 示例场景下输出为True

适配扩展场景

  • 如果需要不区分大小写匹配,可将数组元素和目标字符串统一转小写后比对:return target.lower() in [item.lower() for item in user_posts[post_cat]]
  • 如果后续JSON层级变深、路径不固定,再补充递归遍历逻辑搜索目标节点,当前固定路径场景下按键索引查询性能最优
  • 如果需要匹配部分子串而非完全相等,可遍历数组元素用target in item做子串判断

内容的提问来源于stack exchange,提问作者TigerStrips

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 10:03:21