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

如何提取非标准化JSON格式outgoing字段键中下划线后的值?

问题描述

现有如下表格数据:

idstatusoutgoing
1paid{"a945248027_14454878":"processing","old.a945248027_14454878":"cancelled"}
2pending{"069e5248cf_45299995":"processing"}

需要提取outgoing列中每个键下划线_后的部分,例如从a945248027_14454878提取14454878。之前误以为该JSON数据不规范导致卡壳,求技术实现方案。

解决方案

你给出的outgoing列字符串是标准JSON格式(键用双引号包裹、结构合法),完全可以用常规JSON工具解析处理,以下是两种常见场景的实现:

1. Python 处理

通过JSON解析+字符串分割即可完成提取:

import json

# 模拟表格数据
table_data = [
    {"id": 1, "status": "paid", "outgoing": '{"a945248027_14454878":"processing","old.a945248027_14454878":"cancelled"}'},
    {"id": 2, "status": "pending", "outgoing": '{"069e5248cf_45299995":"processing"}'}
]

for row in table_data:
    # 把outgoing字段解析为字典
    outgoing_dict = json.loads(row["outgoing"])
    # 遍历所有键,提取下划线后的部分
    extracted = [key.split("_")[-1] for key in outgoing_dict if "_" in key]
    print(f"id {row['id']} 提取结果: {extracted}")

运行输出:

id 1 提取结果: ['14454878', '14454878']
id 2 提取结果: ['45299995']

2. SQL(MySQL 8.0+)处理

利用JSON函数+字符串函数实现批量提取:

SELECT 
    id,
    status,
    JSON_ARRAYAGG(SUBSTRING_INDEX(key_val, '_', -1)) AS extracted_parts
FROM (
    SELECT 
        id,
        status,
        JSON_TABLE(
            JSON_KEYS(outgoing),
            '$[*]' COLUMNS(key_val VARCHAR(255) PATH '$')
        ) AS keys_table
    FROM your_table_name
) t
GROUP BY id, status;

该语句会先提取outgoing中的所有键,再分割出下划线后的部分,最后聚合为数组返回结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:21:04