我有以下请求正文,我需要解析为json。我需要将payload字段(这是其中包含很多垃圾的json)解析为适当的JSON对象(这是console.log(req)的结果):

{ payload: '{\\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}' }


为此,我正在使用以下代码:

payload = req.body['payload']
JSON.parse(payload)


这样的代码给我一个错误:

Syntax error: unexpected token \


有趣的是,当我将payload var的内容转储到控制台并使用JSON.parse(my_copied_json_string)将其粘贴到Chrome Dev Console中时,它可以正常工作。

您能告诉我为什么会这样吗,我该怎么做才能理解和解决这个奇怪的问题?



JSFiddle演示了该问题:http://jsfiddle.net/7PZD9/5/

最佳答案

您的JSON被转义两次。

如果您确实需要解析该数据,则可以这样进行:

JSON.parse(JSON.parse('"' + payload + '"'))

09-11 07:55
查看更多