Пробел между выходом JSON.stringify
Я использую Jquery, чтобы получить имя всех продуктов со страницы и поместить его в массив. Я использую этот код
<script type="text/javascript">
jQuery(document).ready(function($) {
var products = $(".product-name").map(function() {
return { name: $(this).text() }
}) .get();
console.log(JSON.stringify(products));
});
</script>
Это даст мне результат в этом формате
[{ "name": "Sample Product Name" }, { "name": "Sample Product Name 2" }]
То, что я пытаюсь достичь, - это одно пространство между этими двумя объектами после ",", поэтому вывод будет выглядеть примерно так:
[{ "name": "Sample Product Name" }, { "name": "Sample Product Name 2" }]
Можно посоветовать? Я борюсь с часами и без успеха.
Вот jsfiddle
http://jsfiddle.net/2MeMY/1/
Ответы
Ответ 1
Это может быть не то, что вы хотите, но если вы просто хотите, чтобы он выглядел лучше, я бы порекомендовал:
console.log(JSON.stringify(products, null, 2));
который даст вам
[
{
"name": "Sample Product Name"
},
{
"name": "Sample Product Name 2"
}
]
В консоли. Если вы действительно просто хотите пробел перед запятыми, вы можете сделать:
console.log(JSON.stringify(products).split('},{').join('}, {'));
http://jsfiddle.net/2MeMY/3/
Ответ 2
Вы также можете сделать это с заменой
console.log(JSON.stringify(products).replace(/},{/g,'}, {'));
// /},{/g means all occurance of },{
Ответ 3
Если вам нужен вывод json:
- Однолинейная
- Имеет пробелы между именами и значениями (и между элементами)
- Имеет пробелы между каждой запятой и следующим именем/элементом пропа
Вы можете использовать это:
function Stringify_WithSpaces(obj) {
let result = JSON.stringify(obj, null, 1); // stringify, with line-breaks and indents
result = result.replace(/^ +/gm, " "); // remove all but the first space for each line
result = result.replace(/\n/g, ""); // remove line-breaks
result = result.replace(/{ /g, "{").replace(/ }/g, "}"); // remove spaces between object-braces and first/last props
result = result.replace(/\[ /g, "[").replace(/ \]/g, "]"); // remove spaces between array-brackets and first/last items
return result;
}
let obj = [{name: "Sample Product Name"}, {name: "Sample Product Name 2"}];
console.log("Stringified with spaces: " + Stringify_WithSpaces(obj));