Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON解析抛出异常,因为使用了叛逆撇号_Javascript_Node.js_Json - Fatal编程技术网

Javascript JSON解析抛出异常,因为使用了叛逆撇号

Javascript JSON解析抛出异常,因为使用了叛逆撇号,javascript,node.js,json,Javascript,Node.js,Json,我不明白为什么JSON输入会出现异常意外结束。我正在NodeJS中创建一个web应用程序,并试图将JSON格式的字符串传递到服务器端。我使用JSON.stringify将对象转换为字符串,然后将其存储在表单属性中以提交给服务器端。这一段javascript如下所示: Javascript(客户端) 在控制台中,我检查我的字符串以检查是否有游离的撇号。撇号是什么,看起来很好。例如,变量logString包含这个有效的Json字符串“[{”msg:“已将字段(licenseid)从(MIT)更改为(

我不明白为什么JSON输入会出现异常
意外结束
。我正在NodeJS中创建一个web应用程序,并试图将JSON格式的字符串传递到服务器端。我使用JSON.stringify将对象转换为字符串,然后将其存储在表单属性中以提交给服务器端。这一段javascript如下所示:

Javascript(客户端)

在控制台中,我检查我的字符串以检查是否有游离的撇号。撇号是什么,看起来很好。例如,变量logString包含这个有效的Json字符串
“[{”msg:“已将字段(licenseid)从(MIT)更改为(ds)。”,“日期”:“23/6/2020@16:47:20”}]”

然而,在我的后端,我在请求主体中接收表单数据,我在数据中看到了以前没有的单撇号

Javascript(服务器端)

输出

[Object: null prototype] {
  'logData[]': '[{"msg":"Changed',  // <--- apostrophe terminates my json string leading to syntax error
  'filedata[]': '[{"pkg":"Newtonsoft.Json","version":"11.0.2","id":"Newtonsoft.Json","licenseid":"nn","flag":false,"approve":false,"comment":"","declared_license_header":"The'
}
[对象:空原型]{
'logData[]':'[{“msg”:“已更改”,//您的问题就在这里

“”
您没有引用
value
属性,因此无法正确设置JSON字符串值,在第一个空白字符处中断

更好的选择是创建
元素并设置
属性,即

const depString=JSON.stringify(allDepList);
const logString=JSON.stringify(allLog);
const hiddenDepList=document.createElement('输入')
hiddenDepList.type='hidden'
hiddenDepList.name='filedata[]'
hiddenDepList.value=depString
const hiddenLog=document.createElement('输入')
hiddenLog.type='hidden'
hiddenLog.name='logData[]'
hiddenLog.value=logString
append(hiddenLog,hiddenDepList)
表格提交(
您的问题就在这里

“”
您没有引用
value
属性,因此无法正确设置JSON字符串值,在第一个空白字符处中断

更好的选择是创建
元素并设置
属性,即

const depString=JSON.stringify(allDepList);
const logString=JSON.stringify(allLog);
const hiddenDepList=document.createElement('输入')
hiddenDepList.type='hidden'
hiddenDepList.name='filedata[]'
hiddenDepList.value=depString
const hiddenLog=document.createElement('输入')
hiddenLog.type='hidden'
hiddenLog.name='logData[]'
hiddenLog.value=logString
append(hiddenLog,hiddenDepList)
表格提交(

首先,您不能使用类似“logData[]”的JSON键。键名中不能有方括号。此外,您所指的JSON字符串是否“有效”也不清楚“实际上在开始和结束处有双引号,或者如果您只是表示字符串。如果是前者,则JSON无效。有联机JSON格式检查程序可能会有所帮助。将JSON字符串复制到窗口中,请按“验证”按钮。@seesharper确保您可以~
{“logData[]”:“foo”}”
对于初学者来说,不能使用类似“logData[]”的JSON键。键名中不能有方括号。此外,还不清楚您所指的JSON字符串是否“有效”实际上,如果在开始和结束处有双引号,或者只是表示字符串。如果是前者,则JSON无效。有联机JSON格式检查程序可能会有所帮助。请将JSON字符串复制到窗口中,按“验证”按钮。@seesharper确保您可以~
{“logData[]”:“foo”}
form#saveForm(method='post', action="http://localhost:3000/project/" + "#{projname}" + "/" + "#{branch}", enctype="x-www-form-urlencoded")
  input#save(type='submit' value="Save")
   const body = req.body;
   jsonStr = body['filedata[]'];
   logStr = body['logData[]'];
   console.log(body);
   console.log(jsonStr);
   console.log(logStr);
[Object: null prototype] {
  'logData[]': '[{"msg":"Changed',  // <--- apostrophe terminates my json string leading to syntax error
  'filedata[]': '[{"pkg":"Newtonsoft.Json","version":"11.0.2","id":"Newtonsoft.Json","licenseid":"nn","flag":false,"approve":false,"comment":"","declared_license_header":"The'
}