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

React.js中如何将接口返回的类JSON字符串转为数组对象以使用filter方法

方案1:JavaScript端处理(API返回后未入库前直接操作)

你拿到的返回字符串属于非标准JSON格式,对象键和字符串值缺少双引号,无法直接用JSON.parse()解析,可选用以下两种方式处理:

  • 正则补全格式后解析(安全性高,推荐使用)
// 接口返回的原始字符串
const apiResponse = `[{title: frontpartID, state: false},{title: backpartID, state: true}]`;
// 正则匹配未加引号的键/字符串值,自动补全双引号
const standardJson = apiResponse.replace(/([a-zA-Z0-9_]+)(?=:)|(?<=: )([a-zA-Z0-9_]+)(?=,|})/g, '"$1$2"');
// 解析为对象数组
const dataArr = JSON.parse(standardJson);
// 按需求筛选
const filteredData = dataArr.filter(item => item.state === true);
  • eval快速转换(仅可在你100%确认返回内容无恶意注入风险的场景使用)
const apiResponse = `[{title: frontpartID, state: false},{title: backpartID, state: true}]`;
const dataArr = eval(`(${apiResponse})`);
const filteredData = dataArr.filter(item => item.state === true);

方案2:SQL Server侧处理(字符串已存入varchar字段,需在库内操作)

SQL Server 2016及以上版本内置JSON解析能力,先将存储的非标准字符串转为标准JSON,再用OPENJSON解析筛选:

DECLARE @rawContent VARCHAR(MAX) = '[{title: frontpartID, state: false},{title: backpartID, state: true}]'
-- 替换补全为标准JSON格式
DECLARE @standardJson VARCHAR(MAX) = REPLACE(REPLACE(REPLACE(REPLACE(@rawContent, 'title: ', '"title": "'), ', state', '", "state"'), 'false}', 'false}'), 'true}', 'true}')

-- 解析并筛选state为true的条目
SELECT title, state
FROM OPENJSON(@standardJson)
WITH (
    title VARCHAR(100) '$.title',
    state BIT '$.state'
)
WHERE state = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:36:06