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

如何从API返回的JSON中提取含指定键值对的对象?

提取API返回JSON中包含指定值的对象

问题描述

我有一个API返回的JSON响应,结构如下(已修正原JSON的语法错误):

{
  "get_result_by_result_id": [
    {
      "data": {
        "date_trunc": "2022-09-06T00:00:00+00:00",
        "project": "Smoothy Finance",
        "usd_volume": 42307.09145419092
      }
    },
    {
      "data": {
        "date_trunc": "2022-09-30T00:00:00+00:00",
        "project": "curve",
        "usd_volume": 40548.688138892685
      }
    },
    {
      "data": {
        "date_trunc": "2022-09-14T00:00:00+00:00",
        "project": " kyber",
        "usd_volume": 13800038.727002844
      }
    }
  ]
}

需要从中提取所有project值包含"kyber"的对象,输出目标格式如下:

{
  "common_objects": [
    {
      "data": {
        "date_trunc": "2022-09-14T00:00:00+00:00",
        "project": " kyber",
        "usd_volume": 13800038.727002844
      }
    },
    {
      "data": {
        "date_trunc": "2022-09-07T00:00:00+00:00",
        "project": " kyber",
        "usd_volume": 24518356.073168807
      }
    }
  ]
}

解决方案

JavaScript实现

利用数组filter方法筛选符合条件的元素,再构造目标结构:

// 解析后的API响应对象
const apiResponse = {
  "get_result_by_result_id": [
    {
      "data": {
        "date_trunc": "2022-09-06T00:00:00+00:00",
        "project": "Smoothy Finance",
        "usd_volume": 42307.09145419092
      }
    },
    {
      "data": {
        "date_trunc": "2022-09-30T00:00:00+00:00",
        "project": "curve",
        "usd_volume": 40548.688138892685
      }
    },
    {
      "data": {
        "date_trunc": "2022-09-14T00:00:00+00:00",
        "project": " kyber",
        "usd_volume": 13800038.727002844
      }
    }
  ]
};

// 筛选project包含"kyber"的项
const kyberObjects = apiResponse.get_result_by_result_id.filter(item => 
  item.data.project.includes("kyber")
);

// 构造并输出目标格式
const result = { "common_objects": kyberObjects };
console.log(JSON.stringify(result, null, 2));

Python实现

通过列表推导式筛选元素,再构造字典输出:

import json

# 解析后的API响应字典
api_response = {
  "get_result_by_result_id": [
    {
      "data": {
        "date_trunc": "2022-09-06T00:00:00+00:00",
        "project": "Smoothy Finance",
        "usd_volume": 42307.09145419092
      }
    },
    {
      "data": {
        "date_trunc": "2022-09-30T00:00:00+00:00",
        "project": "curve",
        "usd_volume": 40548.688138892685
      }
    },
    {
      "data": {
        "date_trunc": "2022-09-14T00:00:00+00:00",
        "project": " kyber",
        "usd_volume": 13800038.727002844
      }
    }
  ]
}

# 筛选project包含"kyber"的项
kyber_objects = [
  item for item in api_response["get_result_by_result_id"]
  if "kyber" in item["data"]["project"]
]

# 构造并输出目标格式
result = { "common_objects": kyber_objects }
print(json.dumps(result, indent=2))

额外说明

  • 原JSON存在多余逗号,需先修正为合法JSON才能正常解析;
  • 若需严格匹配project值(忽略前后空格),可使用trim()(JS)或strip()(Python)处理后再判断;
  • 若需不区分大小写匹配,可将字符串转为小写后再判断,例如:
    • JS:item.data.project.toLowerCase().includes("kyber")
    • Python:"kyber" in item["data"]["project"].lower()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:20:49