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

如何按JSON嵌套字段status过滤Warframe市场API的订单价格列表?

解决JSON嵌套字段过滤与价格排序问题

嗨,刚接触JSON解析不用慌,咱们一步步来搞定这个过滤需求~

首先,你要访问的user.status是嵌套在订单对象里的字段:每个订单(也就是你代码里的tata)本身是一个字典,里面的"user"键对应另一个子字典,这个子字典里的"status"就是咱们用来过滤的核心条件。

接下来直接修改你的代码,在收集价格前先判断订单的用户状态,只保留符合条件的订单价格就行。比如Warframe Market里咱们通常会优先选**在线(online)或在游戏中(ingame)**的订单,因为离线用户的订单没法即时交易:

import json
import urllib2  # 注意:如果用Python3,urllib2已拆分到urllib.request模块,需要调整为import urllib.request

def Trade(item):
    # 发起请求并解析JSON响应
    request = urllib2.Request(f'https://api.warframe.market/v1/items/{item}/orders')
    response = urllib2.urlopen(request)
    data = json.loads(response.read())
    
    # 提取订单列表(简化原代码的多层赋值)
    orders = data["payload"]["orders"]
    prezzi = []
    
    # 遍历订单,过滤符合状态的订单并收集价格
    for order in orders:
        # 逐层访问嵌套的user.status字段
        user_status = order["user"]["status"]
        # 自定义过滤条件,这里保留在线/在游戏中的订单
        if user_status in ["ingame", "online"]:
            price = order["platinum"]
            prezzi.append(price)
    
    # 降序排序并打印(原代码的key=int可省略,因为platinum本身是整数类型)
    print(sorted(prezzi, reverse=True))

关键细节说明:

  • 嵌套字段访问:order["user"]["status"]是逐层深入字典的标准写法,只要API返回的结构稳定,就能直接链式访问。如果担心字段缺失报错,可以加个兜底判断(比如if "user" in order and "status" in order["user"]),不过Warframe Market的API结构很规范,一般不需要。
  • 过滤条件灵活调整:你可以根据需求修改["ingame", "online"],比如只保留"ingame"状态,或者添加其他合法状态值。
  • 排序优化:原代码里的key=int其实多余,因为API返回的platinum本身就是整数类型,直接用reverse=True就能实现降序排列。

如果还有其他JSON解析相关的疑问,随时问哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:55:20