如何用JavaScript提取JSON中冒号后的所有值?substring仅返回单个值
解决JavaScript提取JSON字符串中所有输入值的问题
你的问题出在用字符串截取(substring)处理结构化数据——这种方法只能针对单个固定位置的内容,没法灵活处理多个字段。正确的做法是先把这个格式不规范的字符串转换成合法的JS对象,再直接提取值。
具体步骤与代码示例
- 清洗不规范的字符串:原始payload内容不是合法JSON(属性名无引号、用中文引号、多余逗号),先做格式修正:
// 原始payload字符串 const rawPayload = "{input : { InputFieldTitle1 : “Input1”, InputFieldTitle2 : “Input2”, },}"; // 清洗字符串:替换中文引号、给属性名加双引号、移除多余逗号 const cleanedPayload = rawPayload .replace(/“|”/g, '"') // 把中文引号换成英文双引号 .replace(/(\w+)\s*:/g, '"$1":') // 给所有属性名加上双引号 .replace(/,\s*}/g, '}'); // 去掉对象末尾的多余逗号
- 转换为JS对象并提取值:
// 解析成JS对象 const payloadObj = JSON.parse(cleanedPayload); // 提取所有输入值(返回数组) const allInputValues = Object.values(payloadObj.input); console.log(allInputValues); // 输出 ["Input1", "Input2"] // 也可以单独提取某个字段 const input1 = payloadObj.input.InputFieldTitle1; const input2 = payloadObj.input.InputFieldTitle2; console.log(input1, input2); // 输出 Input1 Input2
为什么substring不行?
substring依赖固定字符位置截取,一旦字段顺序变化、内容长度改变,代码就会失效。而转换成对象后,通过属性名访问是结构化数据的标准处理方式,更可靠也更灵活。
内容的提问来源于stack exchange,提问作者Christina
相关产品推荐
相关产品推荐

