Javascript 无法在节点应用程序中分析json
我需要将以下请求体解析为json。我需要将Javascript 无法在节点应用程序中分析json,javascript,json,node.js,hubot,Javascript,Json,Node.js,Hubot,我需要将以下请求体解析为json。我需要将payload字段(这是一个包含大量垃圾的json)解析为正确的json对象(它是console.log(req)的结果): 为此,我使用以下代码: payload = req.body['payload'] JSON.parse(payload) 这样的代码给了我一个错误: Syntax error: unexpected token \ 有趣的是,当我将payloadvar的内容转储到控制台,并在Chrome开发控制台中使用JSON.parse(
payload
字段(这是一个包含大量垃圾的json)解析为正确的json对象(它是console.log(req)
的结果):
为此,我使用以下代码:
payload = req.body['payload']
JSON.parse(payload)
这样的代码给了我一个错误:
Syntax error: unexpected token \
有趣的是,当我将payload
var的内容转储到控制台,并在Chrome开发控制台中使用JSON.parse(my_copied_JSON_string)
将其传递出去时,它工作得很好
你能告诉我为什么会这样,我能做些什么来理解和解决这个奇怪的问题
jsiddle演示了这个问题:它不应该是nodeJS问题;Chrome和nodeJS使用相同的JavaScript引擎,因此如果在Chrome上运行,它也应该在nodeJS上运行 我试图通过命令行在节点中解析上面的JSON字符串,结果成功了。
我认为在上面的字符串最终到达node之前,它会被修改。这不应该是nodeJS的问题;Chrome和nodeJS使用相同的JavaScript引擎,因此如果在Chrome上运行,它也应该在nodeJS上运行 我试图通过命令行在节点中解析上面的JSON字符串,结果成功了。
我认为在上面的字符串最终到达node之前,它会被修改。这不应该是nodeJS的问题;Chrome和nodeJS使用相同的JavaScript引擎,因此如果在Chrome上运行,它也应该在nodeJS上运行 我试图通过命令行在节点中解析上面的JSON字符串,结果成功了。
我认为在上面的字符串最终到达node之前,它会被修改。这不应该是nodeJS的问题;Chrome和nodeJS使用相同的JavaScript引擎,因此如果在Chrome上运行,它也应该在nodeJS上运行 我试图通过命令行在节点中解析上面的JSON字符串,结果成功了。
我认为在上面的字符串最终到达节点之前,有一些东西会对其进行修改。可能您只需要去掉“payload”=>(以及最后的对应项),这样您的字符串就可以
"{\n \"accountURL\": \"https://domain.com\",\n \"newCommitsCount\": \"1\",\n \"pushURL\":\"https://domain.com/project/64249/git/source/compare/revisions/0b6438955f2a5a7981fd25cfa5b48fe3fb4c888d,7771e638d1356a14d1dc46f3f5cfaab858370a5e\",\n \"unsubscribeURL\": \"https://domain.com:443/unsubscribe?token=receiverToken&type=COMMITS&projectId=64249\",\n \"invokerEmail\": \"email@email.com\",\n \"projectURL\": \"https://domain.com/project/64249\",\n \"projectId\": \"64249\",\n \"afterPushRevision\": \"7771e638d1356a14d1dc46f3f5cfaab858370a5e\",\n \"invokerId\": \"38074\",\n \"pushDate\": \"2014-02-11T15:26:36+0000\",\n \"beforePushRevision\": \"0b6438955f2a5a7981fd25cfa5b48fe3fb4c888d\",\n \"repositoryURL\": \"git_url\",\n \"subdomain\": \"subdomain\",\n \"domain\": \"domain\",\n \"branch\": \"develop\",\n \"invokerProfileURL\": \"url\",\n \"commitsCount\": \"1\",\n \"invokerSmallAvatarURL\": \"xx\",\n \"projectName\": \"NAME\",\n \"invoker\": \"Invoker Name.\",\n \"commits\": {\"commit\": {\n \"revision\": \"7771e638d1356a14d1dc46f3f5cfaab858370a5e\",\n \"commitMessage\": \"quickfix\",\n \"committerId\": \"38074\",\n \"committerEmail\": \"email\",\n \"committerName\": \"Name.\",\n \"commitDate\": \"2014-02-11T15:26:27+0000\",\n \"commitURL\": \"https://domain.com/project/64249/git/source/commit/develop/7771e638d1356a14d1dc46f3f5cfaab858370a5e\" }}}"
可能您只需要去掉“payload”=>(以及末尾的对应项),这样您的字符串
"{\n \"accountURL\": \"https://domain.com\",\n \"newCommitsCount\": \"1\",\n \"pushURL\":\"https://domain.com/project/64249/git/source/compare/revisions/0b6438955f2a5a7981fd25cfa5b48fe3fb4c888d,7771e638d1356a14d1dc46f3f5cfaab858370a5e\",\n \"unsubscribeURL\": \"https://domain.com:443/unsubscribe?token=receiverToken&type=COMMITS&projectId=64249\",\n \"invokerEmail\": \"email@email.com\",\n \"projectURL\": \"https://domain.com/project/64249\",\n \"projectId\": \"64249\",\n \"afterPushRevision\": \"7771e638d1356a14d1dc46f3f5cfaab858370a5e\",\n \"invokerId\": \"38074\",\n \"pushDate\": \"2014-02-11T15:26:36+0000\",\n \"beforePushRevision\": \"0b6438955f2a5a7981fd25cfa5b48fe3fb4c888d\",\n \"repositoryURL\": \"git_url\",\n \"subdomain\": \"subdomain\",\n \"domain\": \"domain\",\n \"branch\": \"develop\",\n \"invokerProfileURL\": \"url\",\n \"commitsCount\": \"1\",\n \"invokerSmallAvatarURL\": \"xx\",\n \"projectName\": \"NAME\",\n \"invoker\": \"Invoker Name.\",\n \"commits\": {\"commit\": {\n \"revision\": \"7771e638d1356a14d1dc46f3f5cfaab858370a5e\",\n \"commitMessage\": \"quickfix\",\n \"committerId\": \"38074\",\n \"committerEmail\": \"email\",\n \"committerName\": \"Name.\",\n \"commitDate\": \"2014-02-11T15:26:27+0000\",\n \"commitURL\": \"https://domain.com/project/64249/git/source/commit/develop/7771e638d1356a14d1dc46f3f5cfaab858370a5e\" }}}"
可能您只需要去掉“payload”=>(以及末尾的对应项),这样您的字符串
"{\n \"accountURL\": \"https://domain.com\",\n \"newCommitsCount\": \"1\",\n \"pushURL\":\"https://domain.com/project/64249/git/source/compare/revisions/0b6438955f2a5a7981fd25cfa5b48fe3fb4c888d,7771e638d1356a14d1dc46f3f5cfaab858370a5e\",\n \"unsubscribeURL\": \"https://domain.com:443/unsubscribe?token=receiverToken&type=COMMITS&projectId=64249\",\n \"invokerEmail\": \"email@email.com\",\n \"projectURL\": \"https://domain.com/project/64249\",\n \"projectId\": \"64249\",\n \"afterPushRevision\": \"7771e638d1356a14d1dc46f3f5cfaab858370a5e\",\n \"invokerId\": \"38074\",\n \"pushDate\": \"2014-02-11T15:26:36+0000\",\n \"beforePushRevision\": \"0b6438955f2a5a7981fd25cfa5b48fe3fb4c888d\",\n \"repositoryURL\": \"git_url\",\n \"subdomain\": \"subdomain\",\n \"domain\": \"domain\",\n \"branch\": \"develop\",\n \"invokerProfileURL\": \"url\",\n \"commitsCount\": \"1\",\n \"invokerSmallAvatarURL\": \"xx\",\n \"projectName\": \"NAME\",\n \"invoker\": \"Invoker Name.\",\n \"commits\": {\"commit\": {\n \"revision\": \"7771e638d1356a14d1dc46f3f5cfaab858370a5e\",\n \"commitMessage\": \"quickfix\",\n \"committerId\": \"38074\",\n \"committerEmail\": \"email\",\n \"committerName\": \"Name.\",\n \"commitDate\": \"2014-02-11T15:26:27+0000\",\n \"commitURL\": \"https://domain.com/project/64249/git/source/commit/develop/7771e638d1356a14d1dc46f3f5cfaab858370a5e\" }}}"
可能您只需要去掉“payload”=>(以及末尾的对应项),这样您的字符串
"{\n \"accountURL\": \"https://domain.com\",\n \"newCommitsCount\": \"1\",\n \"pushURL\":\"https://domain.com/project/64249/git/source/compare/revisions/0b6438955f2a5a7981fd25cfa5b48fe3fb4c888d,7771e638d1356a14d1dc46f3f5cfaab858370a5e\",\n \"unsubscribeURL\": \"https://domain.com:443/unsubscribe?token=receiverToken&type=COMMITS&projectId=64249\",\n \"invokerEmail\": \"email@email.com\",\n \"projectURL\": \"https://domain.com/project/64249\",\n \"projectId\": \"64249\",\n \"afterPushRevision\": \"7771e638d1356a14d1dc46f3f5cfaab858370a5e\",\n \"invokerId\": \"38074\",\n \"pushDate\": \"2014-02-11T15:26:36+0000\",\n \"beforePushRevision\": \"0b6438955f2a5a7981fd25cfa5b48fe3fb4c888d\",\n \"repositoryURL\": \"git_url\",\n \"subdomain\": \"subdomain\",\n \"domain\": \"domain\",\n \"branch\": \"develop\",\n \"invokerProfileURL\": \"url\",\n \"commitsCount\": \"1\",\n \"invokerSmallAvatarURL\": \"xx\",\n \"projectName\": \"NAME\",\n \"invoker\": \"Invoker Name.\",\n \"commits\": {\"commit\": {\n \"revision\": \"7771e638d1356a14d1dc46f3f5cfaab858370a5e\",\n \"commitMessage\": \"quickfix\",\n \"committerId\": \"38074\",\n \"committerEmail\": \"email\",\n \"committerName\": \"Name.\",\n \"commitDate\": \"2014-02-11T15:26:27+0000\",\n \"commitURL\": \"https://domain.com/project/64249/git/source/commit/develop/7771e638d1356a14d1dc46f3f5cfaab858370a5e\" }}}"
下面是一个正在工作的JSFIDLE: 我首先将所有新行字符替换为空白,然后将反斜杠替换为空白。如果字符串中可能有反斜杠,则需要一个我无法编写的更健壮的正则表达式
var fixed_backslashes = string.replace(/\\n/g, "");
fixed_backslashes = fixed_backslashes.replace(/\\/g,"")
下面是一个正在工作的JSFIDLE: 我首先将所有新行字符替换为空白,然后将反斜杠替换为空白。如果字符串中可能有反斜杠,则需要一个我无法编写的更健壮的正则表达式
var fixed_backslashes = string.replace(/\\n/g, "");
fixed_backslashes = fixed_backslashes.replace(/\\/g,"")
下面是一个正在工作的JSFIDLE: 我首先将所有新行字符替换为空白,然后将反斜杠替换为空白。如果字符串中可能有反斜杠,则需要一个我无法编写的更健壮的正则表达式
var fixed_backslashes = string.replace(/\\n/g, "");
fixed_backslashes = fixed_backslashes.replace(/\\/g,"")
下面是一个正在工作的JSFIDLE: 我首先将所有新行字符替换为空白,然后将反斜杠替换为空白。如果字符串中可能有反斜杠,则需要一个我无法编写的更健壮的正则表达式
var fixed_backslashes = string.replace(/\\n/g, "");
fixed_backslashes = fixed_backslashes.replace(/\\/g,"")
这个确实有用。它不是最美的,因为我过滤了好几次。事实上,json字符串有很多垃圾
string = '{\\n \\"taskDueDate\\": \\"No due\\",\\n \\"oldTaskMilestone\\": null,\\n \\"isUpdatedTask\\": \\"true\\",\\n \\"oldTaskAssignee\\": null,\\n \\"statusType\\": \\"OPEN\\",\\n \\"oldTaskVisibility\\": null,\\n \\"isEstimationUpdated\\": \\"false\\",\\n \\"invokerEmail\\": \\"mike@domain\\",\\n \\"oldTaskStatus\\": \\"Resolved\\",\\n \\"projectId\\": \\"61193\\",\\n \\"taskContent\\": \\"Add god to monit background processes\\",\\n \\"taskAssignee\\": \\"Mike B.\\",\\n \\"invokerId\\": \\"38073\\",\\n \\"isLabelsUpdated\\": \\"false\\",\\n \\"taskLabels\\": \\"Improvement\\",\\n \\"isAssignmentUpdated\\": \\"false\\",\\n \\"oldTaskEstimation\\": null,\\n \\"isVisibilityUpdated\\": \\"false\\",\\n \\"isStatusUpdated\\": \\"true\\",\\n \\"isMilestoneUpdated\\": \\"false\\",\\n \\"domain\\": \\"xxx\\",\\n \\"invokerSmallAvatarURL\\": \\"xxx\\",\\n \\"invoker\\": \\"Mike B.\\",\\n \\"taskId\\": \\"33\\",\\n \\"accountURL\\": \\"xx\\",\\n \\"taskAuthor\\": \\"Mike B.\\",\\n \\"isTimeEntryAdded\\": \\"false\\",\\n \\"unsubscribeURL\\": \\"xxx\\",\\n \\"oldTaskPriority\\": null,\\n \\"oldTaskDueDate\\": null,\\n \\"projectURL\\": \\"xxx\\",\\n \\"taskMilestone\\": \\"Not planned\\",\\n \\"taskPriority\\": \\"HIGH\\",\\n \\"taskTitle\\": \\"Start using god gem\\",\\n \\"oldTaskLabels\\": null,\\n \\"isPriorityUpdated\\": \\"false\\",\\n \\"taskURL\\": \\"xxx\\",\\n \\"taskStatus\\": \\"Open\\",\\n \\"subdomain\\": \\"xx\\",\\n \\"invokerProfileURL\\": \\"xx\\",\\n \\"statusLabel\\": \\"reopened\\",\\n \\"taskEstimation\\": \\"Not estimated\\",\\n \\"isNewTask\\": \\"false\\",\\n \\"isAttachmentsUpdated\\": \\"false\\",\\n \\"projectName\\": \\"xx\\",\\n \\"taskVisibility\\": \\"ALL\\",\\n \\"isDueDateUpdated\\": \\"false\\"\\n}'
fixed_backslashes = string.replace(/([^\/])\/([^\/])/g,"$1//$2")
fixed_backslashes = fixed_backslashes.replace(/\\n/g,"")
fixed_backslashes = fixed_backslashes.replace(/\\/g,"")
console.log(fixed_backslashes)
parsed = JSON.parse(fixed_backslashes)
console.log(parsed)
基本上去掉所有的反斜杠和换行符。这一个确实有效。它不是最美的,因为我过滤了好几次。事实上,json字符串有很多垃圾
string = '{\\n \\"taskDueDate\\": \\"No due\\",\\n \\"oldTaskMilestone\\": null,\\n \\"isUpdatedTask\\": \\"true\\",\\n \\"oldTaskAssignee\\": null,\\n \\"statusType\\": \\"OPEN\\",\\n \\"oldTaskVisibility\\": null,\\n \\"isEstimationUpdated\\": \\"false\\",\\n \\"invokerEmail\\": \\"mike@domain\\",\\n \\"oldTaskStatus\\": \\"Resolved\\",\\n \\"projectId\\": \\"61193\\",\\n \\"taskContent\\": \\"Add god to monit background processes\\",\\n \\"taskAssignee\\": \\"Mike B.\\",\\n \\"invokerId\\": \\"38073\\",\\n \\"isLabelsUpdated\\": \\"false\\",\\n \\"taskLabels\\": \\"Improvement\\",\\n \\"isAssignmentUpdated\\": \\"false\\",\\n \\"oldTaskEstimation\\": null,\\n \\"isVisibilityUpdated\\": \\"false\\",\\n \\"isStatusUpdated\\": \\"true\\",\\n \\"isMilestoneUpdated\\": \\"false\\",\\n \\"domain\\": \\"xxx\\",\\n \\"invokerSmallAvatarURL\\": \\"xxx\\",\\n \\"invoker\\": \\"Mike B.\\",\\n \\"taskId\\": \\"33\\",\\n \\"accountURL\\": \\"xx\\",\\n \\"taskAuthor\\": \\"Mike B.\\",\\n \\"isTimeEntryAdded\\": \\"false\\",\\n \\"unsubscribeURL\\": \\"xxx\\",\\n \\"oldTaskPriority\\": null,\\n \\"oldTaskDueDate\\": null,\\n \\"projectURL\\": \\"xxx\\",\\n \\"taskMilestone\\": \\"Not planned\\",\\n \\"taskPriority\\": \\"HIGH\\",\\n \\"taskTitle\\": \\"Start using god gem\\",\\n \\"oldTaskLabels\\": null,\\n \\"isPriorityUpdated\\": \\"false\\",\\n \\"taskURL\\": \\"xxx\\",\\n \\"taskStatus\\": \\"Open\\",\\n \\"subdomain\\": \\"xx\\",\\n \\"invokerProfileURL\\": \\"xx\\",\\n \\"statusLabel\\": \\"reopened\\",\\n \\"taskEstimation\\": \\"Not estimated\\",\\n \\"isNewTask\\": \\"false\\",\\n \\"isAttachmentsUpdated\\": \\"false\\",\\n \\"projectName\\": \\"xx\\",\\n \\"taskVisibility\\": \\"ALL\\",\\n \\"isDueDateUpdated\\": \\"false\\"\\n}'
fixed_backslashes = string.replace(/([^\/])\/([^\/])/g,"$1//$2")
fixed_backslashes = fixed_backslashes.replace(/\\n/g,"")
fixed_backslashes = fixed_backslashes.replace(/\\/g,"")
console.log(fixed_backslashes)
parsed = JSON.parse(fixed_backslashes)
console.log(parsed)
基本上去掉所有的反斜杠和换行符。这一个确实有效。它不是最美的,因为我过滤了好几次。事实上,json字符串有很多垃圾
string = '{\\n \\"taskDueDate\\": \\"No due\\",\\n \\"oldTaskMilestone\\": null,\\n \\"isUpdatedTask\\": \\"true\\",\\n \\"oldTaskAssignee\\": null,\\n \\"statusType\\": \\"OPEN\\",\\n \\"oldTaskVisibility\\": null,\\n \\"isEstimationUpdated\\": \\"false\\",\\n \\"invokerEmail\\": \\"mike@domain\\",\\n \\"oldTaskStatus\\": \\"Resolved\\",\\n \\"projectId\\": \\"61193\\",\\n \\"taskContent\\": \\"Add god to monit background processes\\",\\n \\"taskAssignee\\": \\"Mike B.\\",\\n \\"invokerId\\": \\"38073\\",\\n \\"isLabelsUpdated\\": \\"false\\",\\n \\"taskLabels\\": \\"Improvement\\",\\n \\"isAssignmentUpdated\\": \\"false\\",\\n \\"oldTaskEstimation\\": null,\\n \\"isVisibilityUpdated\\": \\"false\\",\\n \\"isStatusUpdated\\": \\"true\\",\\n \\"isMilestoneUpdated\\": \\"false\\",\\n \\"domain\\": \\"xxx\\",\\n \\"invokerSmallAvatarURL\\": \\"xxx\\",\\n \\"invoker\\": \\"Mike B.\\",\\n \\"taskId\\": \\"33\\",\\n \\"accountURL\\": \\"xx\\",\\n \\"taskAuthor\\": \\"Mike B.\\",\\n \\"isTimeEntryAdded\\": \\"false\\",\\n \\"unsubscribeURL\\": \\"xxx\\",\\n \\"oldTaskPriority\\": null,\\n \\"oldTaskDueDate\\": null,\\n \\"projectURL\\": \\"xxx\\",\\n \\"taskMilestone\\": \\"Not planned\\",\\n \\"taskPriority\\": \\"HIGH\\",\\n \\"taskTitle\\": \\"Start using god gem\\",\\n \\"oldTaskLabels\\": null,\\n \\"isPriorityUpdated\\": \\"false\\",\\n \\"taskURL\\": \\"xxx\\",\\n \\"taskStatus\\": \\"Open\\",\\n \\"subdomain\\": \\"xx\\",\\n \\"invokerProfileURL\\": \\"xx\\",\\n \\"statusLabel\\": \\"reopened\\",\\n \\"taskEstimation\\": \\"Not estimated\\",\\n \\"isNewTask\\": \\"false\\",\\n \\"isAttachmentsUpdated\\": \\"false\\",\\n \\"projectName\\": \\"xx\\",\\n \\"taskVisibility\\": \\"ALL\\",\\n \\"isDueDateUpdated\\": \\"false\\"\\n}'
fixed_backslashes = string.replace(/([^\/])\/([^\/])/g,"$1//$2")
fixed_backslashes = fixed_backslashes.replace(/\\n/g,"")
fixed_backslashes = fixed_backslashes.replace(/\\/g,"")
console.log(fixed_backslashes)
parsed = JSON.parse(fixed_backslashes)
console.log(parsed)
基本上去掉所有的反斜杠和换行符。这一个确实有效。它不是最美的,因为我过滤了好几次。事实上,json字符串有很多垃圾
string = '{\\n \\"taskDueDate\\": \\"No due\\",\\n \\"oldTaskMilestone\\": null,\\n \\"isUpdatedTask\\": \\"true\\",\\n \\"oldTaskAssignee\\": null,\\n \\"statusType\\": \\"OPEN\\",\\n \\"oldTaskVisibility\\": null,\\n \\"isEstimationUpdated\\": \\"false\\",\\n \\"invokerEmail\\": \\"mike@domain\\",\\n \\"oldTaskStatus\\": \\"Resolved\\",\\n \\"projectId\\": \\"61193\\",\\n \\"taskContent\\": \\"Add god to monit background processes\\",\\n \\"taskAssignee\\": \\"Mike B.\\",\\n \\"invokerId\\": \\"38073\\",\\n \\"isLabelsUpdated\\": \\"false\\",\\n \\"taskLabels\\": \\"Improvement\\",\\n \\"isAssignmentUpdated\\": \\"false\\",\\n \\"oldTaskEstimation\\": null,\\n \\"isVisibilityUpdated\\": \\"false\\",\\n \\"isStatusUpdated\\": \\"true\\",\\n \\"isMilestoneUpdated\\": \\"false\\",\\n \\"domain\\": \\"xxx\\",\\n \\"invokerSmallAvatarURL\\": \\"xxx\\",\\n \\"invoker\\": \\"Mike B.\\",\\n \\"taskId\\": \\"33\\",\\n \\"accountURL\\": \\"xx\\",\\n \\"taskAuthor\\": \\"Mike B.\\",\\n \\"isTimeEntryAdded\\": \\"false\\",\\n \\"unsubscribeURL\\": \\"xxx\\",\\n \\"oldTaskPriority\\": null,\\n \\"oldTaskDueDate\\": null,\\n \\"projectURL\\": \\"xxx\\",\\n \\"taskMilestone\\": \\"Not planned\\",\\n \\"taskPriority\\": \\"HIGH\\",\\n \\"taskTitle\\": \\"Start using god gem\\",\\n \\"oldTaskLabels\\": null,\\n \\"isPriorityUpdated\\": \\"false\\",\\n \\"taskURL\\": \\"xxx\\",\\n \\"taskStatus\\": \\"Open\\",\\n \\"subdomain\\": \\"xx\\",\\n \\"invokerProfileURL\\": \\"xx\\",\\n \\"statusLabel\\": \\"reopened\\",\\n \\"taskEstimation\\": \\"Not estimated\\",\\n \\"isNewTask\\": \\"false\\",\\n \\"isAttachmentsUpdated\\": \\"false\\",\\n \\"projectName\\": \\"xx\\",\\n \\"taskVisibility\\": \\"ALL\\",\\n \\"isDueDateUpdated\\": \\"false\\"\\n}'
fixed_backslashes = string.replace(/([^\/])\/([^\/])/g,"$1//$2")
fixed_backslashes = fixed_backslashes.replace(/\\n/g,"")
fixed_backslashes = fixed_backslashes.replace(/\\/g,"")
console.log(fixed_backslashes)
parsed = JSON.parse(fixed_backslashes)
console.log(parsed)
基本上去掉所有的反斜杠和换行符。您的JSON被转义两次 如果您确实需要解析该数据,可以这样做:
JSON.parse(JSON.parse('''''+payload+''''''))
您的JSON被转义两次
如果您确实需要解析该数据,可以这样做:
JSON.parse(JSON.parse('''''+payload+''''''))
您的JSON被转义两次
如果您确实需要解析该数据,可以这样做:
JSON.parse(JSON.parse('''''+payload+''''''))
您的JSON被转义两次
如果您确实需要解析该数据,可以这样做:
JSON.parse(JSON.parse('''''+payload+''''''))
您确定错误来自JSON.parse,而不是来自应用程序中的其他内容吗?我刚刚试过,它在node.js中解析正确。我可以确认与@badsyntax相同。我刚刚尝试了你的json字符串,它解析得很好。请添加一个最小的nodejs示例,给出你看到的错误。没有代码很难回答。我已经更新了原始问题,使其更加具体,请看一看。负载前缀可能是问题所在吗?特别是“=>”。您是否使用RubyonRails创建对象?是否确定错误来自JSON.parse,而不是来自应用程序中的其他内容?我刚刚试过,它在node.js中解析正确。我可以确认与@badsyntax相同。我刚刚尝试了你的json字符串,它解析得很好。请添加一个最小的nodejs示例,给出你看到的错误。没有代码很难回答。我已经更新了原始问题,使其更加具体,请看一看。负载前缀可能是问题所在吗?规格