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

如何从不完整类JSON字符串中提取@nexturl键的完整值

提取不完整类JSON中@nexturl值的实现方案

问题描述

现有一段不完整的类JSON字符串,需要提取最后一个键值对中@nexturl对应的值,待处理字符串如下:

"BaseCode":null,"BrokerSymbol":null,"CustID":null,"SynthDesc":""}],"@nexturl":"https://someurl.com"}

原有实现采用按冒号分割取最后一段的逻辑:

str1.split(":")[-1]

运行后输出//someurl.com,存在两处明显问题:

  • 分割逻辑会截断URL的https前缀,无法拿到完整地址
  • 鲁棒性不足,只要URL中包含其他冒号字符就会出现分割错误

可行实现方法

方法1:补全结构后用标准JSON解析(优先推荐,稳定性最高)

观察待处理字符串可发现,其仅缺失最开头的左大括号{,补全后即为完全合法的JSON结构,直接用语言内置的JSON库解析即可,完全不受值内部特殊字符影响:

import json

raw_str = '''"BaseCode":null,"BrokerSymbol":null,"CustID":null,"SynthDesc":""}],"@nexturl":"https://someurl.com"}'''
# 补全开头缺失的左大括号,生成合法JSON
valid_json = '{' + raw_str
parsed_data = json.loads(valid_json)
next_url = parsed_data["@nexturl"]
# 输出结果为 https://someurl.com

如果待处理字符串开头缺失的内容长度不固定,可以先定位"@nexturl"的起始索引,截断该位置之前的无效内容后再补全左大括号,适配更多残缺场景。

方法2:按键名定位做字符串截取(轻量场景适用)

如果不想引入JSON解析逻辑,且确定@nexturl的取值为双引号包裹的字符串,可以直接定位键名位置,截取两个双引号之间的内容,不会受值内部冒号干扰:

raw_str = '''"BaseCode":null,"BrokerSymbol":null,"CustID":null,"SynthDesc":""}],"@nexturl":"https://someurl.com"}'''
key_flag = '"@nexturl":"'
# 定位值的起始位置
start_idx = raw_str.find(key_flag) + len(key_flag)
# 定位值结束的双引号位置
end_idx = raw_str.find('"', start_idx)
next_url = raw_str[start_idx:end_idx]
# 输出结果为 https://someurl.com

该方法只要键名匹配、值的格式符合双引号包裹的规则,即使值内包含多个冒号、特殊符号也能正确提取。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 07:15:33