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