Функция log ест фигурные скобки

Правило:

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А вот так печатаются две открывающиеся скобки: { - тоже неправильно

Форматирование описано тут: GitHub - wirenboard/wb-rules: Rule engine for Wiren Board

А что вы форматируете?

log(“…”, arg1, arg2) идентично log(“…”.format(arg1, arg2))

действительно, джейсон можно распечатать нормально только через форматирование:

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": {}
}

ну с двумя открывающимися скобками точно баг. а для джейсонов с пустыми объектами да, форматирование помогает

в ридми же указано, что {{ используется как ескейп последовательность для {:

Для включения символа { в строку формата следует использовать {{: "a={} {{}".format("q") даёт "a=q {}".

значит, надо запомнить: нельзя выводить строковые переменные просто через log(v), надо писать log("{}", v)

понял, спасибо

почему же нельзя, можно, оба варианта верные.

потому что в строковых переменных то и дело встречаются последовательности {} и {{, особенно когда распечатываешь json