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

API测试:如何在动态JSON中获取首个subject为Open this message的id

问题描述

我正在做API测试,拿到的JSON响应是动态变化的(结构固定,但值和对象顺序会改变)。需要实现逻辑:找到首个subject字段值为Open this message的JSON对象,并获取它对应的id值(比如示例中的3328367679)。

示例JSON响应(顺序可变):

[
    {
        "id": 3394784853,
        "inbox_id": 35584,
        "subject": "Another message"
    },
    {
        "id": 3328367679,
        "inbox_id": 35584,
        "subject": "Open this message"
    },
    {
        "id": 3328364404,
        "inbox_id": 35584,
        "subject": "Another message"
    }
]

解决方案

方案1:Python实现

直接遍历列表,找到第一个匹配项就停止,避免无效遍历:

import json

# 替换为实际接口返回的JSON字符串
api_response = '''[
    {"id": 3394784853,"inbox_id": 35584,"subject": "Another message"},
    {"id": 3328367679,"inbox_id": 35584,"subject": "Open this message"},
    {"id": 3328364404,"inbox_id": 35584,"subject": "Another message"}
]'''

# 解析JSON为Python列表
message_list = json.loads(api_response)

target_id = None
for msg in message_list:
    if msg.get('subject') == 'Open this message':
        target_id = msg.get('id')
        break  # 找到首个匹配项后立即停止

print(target_id)  # 输出:3328367679

方案2:JavaScript/Node.js实现

利用数组find方法快速定位首个匹配对象:

// 替换为实际接口返回的JSON数组
const response = [
    {"id": 3394784853,"inbox_id": 35584,"subject": "Another message"},
    {"id": 3328367679,"inbox_id": 35584,"subject": "Open this message"},
    {"id": 3328364404,"inbox_id": 35584,"subject": "Another message"}
];

const targetMsg = response.find(msg => msg.subject === 'Open this message');
const targetId = targetMsg ? targetMsg.id : null;

console.log(targetId); // 输出:3328367679

方案3:Postman测试脚本实现

适合API测试场景,可将结果存为环境变量供后续请求使用:

// 解析接口响应JSON
const responseJson = pm.response.json();

let targetId = null;
for (let i = 0; i < responseJson.length; i++) {
    if (responseJson[i].subject === 'Open this message') {
        targetId = responseJson[i].id;
        break;
    }
}

// 存储到环境变量(可选)
pm.environment.set("target_message_id", targetId);
console.log("目标ID:", targetId);

核心逻辑说明

所有方案的核心思路一致:

  1. 解析JSON数组
  2. 按顺序遍历数组中的每个对象
  3. 检查对象的subject字段是否匹配目标值
  4. 找到首个匹配对象后,立即取出id并终止遍历(提升效率)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:03:38