node и экспресс-отправка в формате json

Я пытаюсь отправить отформатированный json с экспрессом.

Вот мой код:

var app = express();

app.get('/', function (req, res) {
  users.find({}).toArray(function(err, results){
    // I have try both
    res.send(JSON.stringify(results, null, 4));
    // OR
    res.json(results);
  });
});

Я получаю json в своем браузере, но это строка. Как я могу отправить его, чтобы он был читаем в браузере?


person BoumTAC    schedule 20.09.2015    source источник
comment
JSON всегда является строкой. Чтобы вернуть объект, вы должны проанализировать эту строку на стороне клиента.   -  person Sirko    schedule 20.09.2015


Ответы (5)


Вам нужно будет установить Content-Type в application/json, как это

app.get('/', function (req, res) {
    users.find({}).toArray(function(err, results){
        res.header("Content-Type",'application/json');
        res.send(JSON.stringify(results, null, 4));
  });
});
person Bidhan    schedule 20.09.2015
comment
спасибо, это работает со строковым способом. Пожалуйста, отредактируйте свой пост, чтобы он был более понятным, и я мог проверить его. - person BoumTAC; 20.09.2015

попробуйте установить «секретное» свойство json spaces в приложении Node.

app.set('json spaces', 2)

Это утверждение выше создаст отступ в содержимом json.

person Alexis Diel    schedule 02.01.2018
comment
Я думаю, что JSON.stringify() плюс заголовок типа контента — это официальный способ, который следует понимать, но это секретное свойство предпочтительнее, потому что оно намного умнее! - person Zhiyong; 11.07.2019

Используйте type('json'), чтобы установить Content-Type и JSON.stringify() для форматирования:

var app = express();

app.get('/', (req, res) => {
  users.find({}).toArray((err, results) => {
    res.type('json').send(JSON.stringify(results, null, 2) + '\n');
  });
});
person Afanasii Kurakin    schedule 27.03.2019

Это должно решить вашу проблему

var app = express();
app.set('json spaces', 4)

app.get('/', function (req, res) {
  users.find({}).toArray(function(err, results){
      res.json(JSON.parse(results));
  });
});
person Manjunath G    schedule 19.07.2018

Возможно, вам нужно JSON.parse(resp)

person Jason Livesay    schedule 20.09.2015