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

使用变量与直接值时字典值异常导致AssetPanda API搜索失效问题

解决AssetPanda API变量传参搜索失效的问题

排查与解决思路

  • 验证变量的实际值:先确认username变量的内容和硬编码的"user.name"完全一致,避免存在空格、换行或不可见字符这类隐性差异。可以通过打印变量的原始表示来对比:
    username = "user.name"
    print(repr(username))  # 应输出 'user.name'
    print(repr("user.name"))
    
  • 对比JSON序列化结果:手动将两种方式生成的data字典序列化为JSON字符串,检查是否存在格式差异——requests的json参数自动序列化时,可能因变量的隐式特性导致格式变化:
    import json
    # 硬编码版本的JSON
    hardcoded_json = json.dumps({
        "field_filters": {
            "field_num": ["user.name"]
        }
    })
    # 变量版本的JSON
    var_json = json.dumps({
        "field_filters": {
            "field_num": [username]
        }
    })
    print(hardcoded_json == var_json)  # 正常应返回True
    
  • 直接传递序列化后的JSON字符串:如果发现序列化结果有差异,或者API对JSON格式有特殊要求,可以手动序列化后用data参数发送请求,同时确保headers包含Content-Type: application/json:
    payload = json.dumps(data)
    response = requests.request('POST', APurl, headers=headers, data=payload)
    
  • 检查变量赋值逻辑:如果username是通过其他逻辑生成(比如用户输入、数据库读取),要确认变量没有被意外修改,比如大小写变更、额外字符拼接等,赋值后立即打印变量值做校验。

函数化实现示例

确认变量传参正常后,可编写如下函数封装逻辑,同时完成响应的精简解析:

import requests
import json

def get_filtered_users(target_username, api_url, request_headers):
    # 提前校验变量值,避免无效请求
    assert repr(target_username) == repr("user.name"), "目标用户名格式不符合API要求"
    
    request_data = {
        "field_filters": {
            "field_num": [target_username]
        }
    }
    
    response = requests.post(api_url, headers=request_headers, json=request_data)
    response.raise_for_status()  # 主动捕获HTTP错误状态码
    raw_response = response.json()
    
    # 解析为精简版本,示例:提取用户ID、名称核心字段
    simplified_users = [
        {
            "user_id": item.get("id"),
            "user_name": item.get("name")
        }
        for item in raw_response.get("data", [])
    ]
    return simplified_users

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:30:43