我有以下请求正文,我需要解析为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 + '"'))