Разбор JSON в узле express - заканчивается \ n между разделителями? - PullRequest
0 голосов
/ 16 марта 2020

Я отправляю запрос Ajax на конечную точку express, например:

var postData = {
      method: "POST",
      url: "/order/address",
      data: { order: JSON.stringify(addressFields) },
      cache: false
    };

    updateAjax = $.ajax(postData).done(function(data) {

Отправляемый объект адреса представляет собой массив JSON. Я подтвердил, что он еще не разбит на строки до того, как сделать это в объекте данных post.

Он отправляет сообщение на запущенный узел сервера express с путем /order/address.

Маршрут express выглядит следующим образом, показывая только до точки, которую анализируется json, поскольку это единственные соответствующие части этого:

router.route('/')
  .post(function (req, res, next) {
    // prevents caching of customer information
    res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate');

    const addresses = JSON.parse(req.body.order);

До анализа req.body.order это:

[{\"isDefaultShipping\":true,\"firstName\":\"\",\"lastName\":\"\",\"street1\":\"\",\"street2\":\"\",\"city\":\"\",\"postcode\":\"\",\"region\":\"\",\"country\":\"GB\",\"phone\":\"\",\"isDefaultBilling\":true}]

И вот проблема, с которой я столкнулся, после анализа она становится недействительным JSON объектом:

[\n {\n isDefaultShipping: true,\n firstName: '',\n lastName: '',\n street1: '',\n street2: '',\n city: '',\n postcode: '',\n region: '',\n country: 'GB',\n phone: '',\n isDefaultBilling: true\n }\n]

Мне не удалось удалить разрывы строк - и я думаю, что есть разрывы строк, которые не видны в разбираемых строковых данных - но я не могу на всю жизнь удалить их?

РЕДАКТИРОВАТЬ: Кто-то любезно указал на мою глупость (вежливо), что вывод выше, с \ n переносами строк, мой регистратор, так что игнорируйте эту часть. Оставить его там - ну, потому что было бы грубым убрать эту часть моего вопроса, на которую я получил ответ.

Почтальон показывает следующую проблему, когда попадает в строку JSON .parse на маршруте. :

SyntaxError: Unexpected token u in JSON at position 0\n at JSON.parse (<anonymous>)

1 Ответ

0 голосов
/ 16 марта 2020

Просто замените \ n

router.route('/')
  .post(function (req, res, next) {
    // prevents caching of customer information
    res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate');

    const addresses = JSON.parse(req.body.order).replace(\[\n]+\, '');
...