【问题标题】:How to parse JSON from input field [duplicate]如何从输入字段解析 JSON [重复]
【发布时间】:2021-11-22 08:49:32
【问题描述】:

我正在尝试从我的 node.js 服务器上的输入字段解析 json 数据。如果我只是将值 16 作为输入字段中的值,我可以简单地用request.body.id<input type="hidden" id="id" name="id" value="16"/>))读出它。但是当我将 json 字符串化为输入字段的值并解析 json 的数据时,我总是收到错误SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>)。但是我可以在浏览器控制台中看到我的json数据 <input type="hidden" id="id" name="id" value="{" a":0.3,"b":0.5,"c":1.3}">为什么我不能用request.body.id读取输入字段的值?

【问题讨论】:

  • 请贴出导致解析器错误的字符串。在JSON.parse 之前添加console.log
  • 您可能只发送{。属性为value="{"。将value="{" a":0.3,"b":0.5,"c":1.3}" 替换为value="{\" a\":0.3,\"b\":0.5,\"c\":1.3}"
  • @jabaa 我已经尝试过了,但我总是一无所获。我只得到一个开放的花括号而没有右大括号。 { 但正如我提到的,我可以在浏览器检查中看到我的 json。
  • @jabaa 我该怎么做?我有一个像 data = {a: 1, b:2, c:3} 这样的对象,然后像这样 var json = JSON.stringify(data) 对其进行字符串化
  • 我不明白这与问题有什么关系。在问题中,您在 HTML 中硬编码了导致特定问题的 JSON。我的回答中有一个可能的解决方案。您是否在 JavaScript 中使用 '<input type="hidden" id="id" name="id" value="' + json + '">' 之类的内容生成 HTML?

标签: javascript html node.js json


【解决方案1】:

在前端应用程序中调用相应端点时,您只需将 JSON 数据发送到服务器。您不应该将 html 直接发送到节点 js 端点

【讨论】:

    【解决方案2】:

    标签

    <input type="hidden" id="id" name="id" value="{" a":0.3,"b":0.5,"c":1.3}">
    

    包含属性

    type="hidden"
    id="id"
    name="id"
    value="{"
    

    还有一些垃圾

    a":0.3,"b":0.5,"c":1.3}"
    

    因为 JSON 中的第一个引号关闭了属性。

    你必须伪装引号

    <input type="hidden" id="id" name="id" value="{&quot; a&quot;:0.3,&quot;b&quot;:0.5,&quot;c&quot;:1.3}">
    

    在 cmets 中澄清后,这里是一个工作示例:

    const json = JSON.stringify({" a":0.3,"b":0.5,"c":1.3});
    
    document.body.innerHTML = `<input value="${json.replaceAll('"', '&quot;')}">`;
    const input = document.querySelector('input');
    
    console.log(JSON.parse(input.value));

    【讨论】:

    • value="{\" a\":0.3,\"b\":0.5,\"c\":1.3}" 不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    相关资源
    最近更新 更多