Я использую Node.js и новичок в этом программном обеспечении. Однако это то, что беспокоило меня с тех пор, как я был ванильным интерфейсом. У меня простой поток html.get
https.get(url, (res)=>{
res.setEncoding('utf8');
let body = '';
res.on('data', (data)=>{
body += data;
});
res.on('end', ()=>{
body = JSON.parse(body);
//console.info(typeof body);
callback(body);
})
})
с функцией обратного вызова, просто возвращающей файл на мою веб-страницу
function callback(body){
res.send(body);
}
Проблема, с которой я столкнулся, заключается в том, что файл, который я отправляю на свой сервер, то есть var = body, заключается в том, что файл ... не легко читается. Я не уверен, что это имеет полный смысл, поэтому это может быть лучшим объяснением:
Вот чего я хочу:
{
"title": "Google Custom Search - lectures",
"totalResults": "970000000",
"searchTerms": "lectures",
"count": 10,
"startIndex": 11,
"inputEncoding": "utf8",
"outputEncoding": "utf8",
"safe": "off",
"cx": "[REDACTED]"
}
со всеми пробелами нетронутыми. Это то, что дает URL для получения. Однако после его получения и объединения / анализа с моим алгоритмом я получаю:
{"title":"Google Custom Search - lectures","totalResults":"970`0000","searchTerms":"lectures","count":10,"startIndex":11,"inputEncoding":"utf8","outputEncoding":"utf8","safe":"off","cx":"[REDACTED]"}]}
без пробелов и прочего. Это просто выходит в виде «блоков текстов». Я (НАДЕЖДА) я сделал что-то не так, и есть способ сохранить исходный формат, когда я использую вызов html.get.
Мой первоначальный план состоял в том, чтобы использовать некоторую «магию регулярных выражений», чтобы отформатировать его, чтобы он стал более читабельным, но я надеюсь, что должен быть другой способ, учитывая, что исходный URL-адрес отформатировал его правильно. Я имею дело с большим файлом JSON, поэтому было бы неплохо использовать более читаемый формат. Я не уверен, правильно ли я объяснил свой сценарий, это мой первый вопрос по стеку, но если нет, пожалуйста, дайте мне знать. Спасибо!
Это была тема, в которой я только что был. Я полагаю, что «магия регулярных выражений» - единственный верный ответ на этот вопрос, да.
Смотрите здесь: stackoverflow.com/questions/19696240/…
JSON.stringify (body, null, 4) или около того должен помочь - на мой взгляд, - но он по-прежнему не работает должным образом. Может быть, когда я конкатенирую что-то пойдет не так. Я иду спать, но, может быть, он щелкнет, когда я проснусь завтра.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете написать простую функцию для форматирования JSON так, как вы хотите. Возможно, вам понадобится другой формат ведения журнала, а не веб-страница и т. д. Это обертывает метод JSON.stringify (хорошо документированный здесь:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify и здесь:
https://www.w3schools.com/js/js_json_stringify.asp.
var data = {"title":"Google Custom Search - lectures","totalResults":"970`0000","searchTerms":"lectures","count":10,"startIndex":11,"inputEncoding":"utf8","outputEncoding":"utf8","safe":"off","cx":"[REDACTED]"};
function prettyPrintJSON(data, space = 2) {
return JSON.stringify(data, null, space);
}
console.info(prettyPrintJSON(data));
Результат будет выглядеть так:
{
"title": "Google Custom Search - lectures",
"totalResults": "970`0000",
"searchTerms": "lectures",
"count": 10,
"startIndex": 11,
"inputEncoding": "utf8",
"outputEncoding": "utf8",
"safe": "off",
"cx": "[REDACTED]"
}
Вот пример JSFiddle:
https://jsfiddle.net/uovtaxq3/3/
Спасибо! Это не совсем то, что мне было нужно, но это помогло мне разобраться в моей проблеме. Пробел из get записывался в мой проанализированный JSON как </br> и \ n. Просто изменив res.send () на res.write (), удалось это исправить.
проверьте это: stackoverflow.com/questions/4810841/…