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

如何将input框中的字符串值转换为JSON数组对象?

问题解决方法

你用JSON.parse失败的核心原因是:input框里的字符串不是标准JSON格式——JSON规范要求对象的键和字符串值必须用双引号,而你这里用的是单引号,所以解析会报错。

下面给你几种可行的解决方式:

1. 修正input的value为标准JSON(推荐)

直接把input里的单引号全部替换成双引号,同时注意用单引号包裹input的value属性值(避免HTML属性的引号冲突):

<input id="txtstr" name="txtstr" value='[{"text":"t1","value":"1"},{"text":"t2","value":"2"},{"text":"t3","value":"3"},{"text":"t4","value":"4"}]' type="text" />

之后在JS里直接用JSON.parse就能得到目标数组:

const inputVal = $("#txtstr").val();
const resultArr = JSON.parse(inputVal);
console.log(resultArr); // 和你定义的d1格式完全一致

2. 无法修改input内容时,先替换单引号再解析

如果没法改动input的原始内容,可以先把字符串里的单引号替换成双引号,再执行解析:

const inputVal = $("#txtstr").val();
// 全局替换所有单引号为双引号
const validJson = inputVal.replace(/'/g, '"');
const resultArr = JSON.parse(validJson);
console.log(resultArr);

⚠️ 注意:如果你的文本内容本身包含单引号(比如text:'t1's'),这种替换会破坏原有内容,所以优先用第一种方法。

3. 慎用eval(仅在内容完全可信时使用)

如果上面两种方式都不适用,可以用eval直接解析字符串,但这个方法有严重的安全风险——如果input内容是用户可控的,可能会注入恶意代码:

const inputVal = $("#txtstr").val();
const resultArr = eval(inputVal);
console.log(resultArr);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:28:10