fedd
1
Правило:
var test = {
one: "two",
three: {},
four: {
five: "six",
seven: [
"eight",
"nine"
],
ten: [
]
}
};
log(JSON.stringify(test));
log(JSON.stringify(test, null, " "));
log(test);
log("Ну и наконец, {}", test);
log("А вот так печатаются две открывающиеся скобки: {{ - тоже неправильно");
Вывод:
2026-02-26 09:31:36{"one":"two","three":,"four":{"five":"six","seven":["eight","nine"],"ten":[]}}
2026-02-26 09:31:36{
"one": "two",
"three": ,
"four": {
"five": "six",
"seven": [
"eight",
"nine"
],
"ten": []
}
}
2026-02-26 09:31:36[object Object]
2026-02-26 09:31:36Ну и наконец, [object Object]
2026-02-26 09:31:36А вот так печатаются две открывающиеся скобки: { - тоже неправильно
sikmir
2
sikmir
4
log(“…”, arg1, arg2) идентично log(“…”.format(arg1, arg2))
fedd
5
действительно, джейсон можно распечатать нормально только через форматирование:
log("две фигурные скобки {{ превращаются в одну");
var test = {nothing: {}};
log(JSON.stringify(test, null, " "));
log("{}", JSON.stringify(test, null, " "));
026-02-26 10:53:33две фигурные скобки { превращаются в одну
2026-02-26 10:53:33{
"nothing":
}
2026-02-26 10:53:33{
"nothing": {}
}
fedd
6
ну с двумя открывающимися скобками точно баг. а для джейсонов с пустыми объектами да, форматирование помогает
sikmir
7
в ридми же указано, что {{ используется как ескейп последовательность для {:
Для включения символа { в строку формата следует использовать {{: "a={} {{}".format("q") даёт "a=q {}".
fedd
8
значит, надо запомнить: нельзя выводить строковые переменные просто через log(v), надо писать log("{}", v)
понял, спасибо
sikmir
9
почему же нельзя, можно, оба варианта верные.
fedd
10
потому что в строковых переменных то и дело встречаются последовательности {} и {{, особенно когда распечатываешь json