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

如何在Node.js服务端解析input输入框中的JSON数据并处理报错

问题原因分析

核心问题是HTML属性引号与JSON内部引号冲突,导致浏览器解析input的value值时提前截断。

你提交的input代码为<input type="hidden" id="id" name="id" value="{"a":0.3,"b":0.5,"c":1.3}">,由于value属性使用双引号包裹,JSON内部的"会被浏览器识别为value属性的结束标记,最终浏览器认为该input的value值只有{,提交到服务端后request.body.id拿到的就是不完整的{字符串,执行JSON.parse("{")自然会抛出意外终止的语法错误。

解决方案
  • 方案1:转义JSON内部的双引号
    把JSON字符串序列化后,将所有双引号替换为HTML实体&quot;,再赋值给value属性,处理后的input代码应为:
    <input type="hidden" id="id" name="id" value="{&quot;a&quot;:0.3,&quot;b&quot;:0.5,&quot;c&quot;:1.3}">
    
  • 方案2:使用单引号包裹value属性
    将value属性的包裹符号换成单引号,避免和JSON内部的双引号冲突:
    <input type="hidden" id="id" name="id" value='{"a":0.3,"b":0.5,"c":1.3}'>
    
    注意如果JSON内容本身包含单引号,需要提前转义为\'。
  • 方案3:通过JS API赋值
    如果是前端动态生成input,不要手动拼接HTML字符串,使用setAttribute方法赋值,浏览器会自动处理转义逻辑:
    const obj = {a:0.3, b:0.5, c:1.3}
    document.getElementById('id').setAttribute('value', JSON.stringify(obj))
    

内容的提问来源于stack exchange,提问作者Thorben C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:36:05