Я пытался избавиться от пустых групп атрибутов из следующей строки.
var str = '{"groups":[{"groupId":"03V5DCC","attributes":{}},{"groupId":"02VXTCB","attributes":{"registrationId":"550049390"}},{"groupId":"W3UV5SD","attributes":{}},],"status":{"code":200,"messageResource":"string-serverres-success"}}';
// tried with g and without g
console.log(str.replace(/\{"groupId":".*?","attributes":\{\}\},/g,''));
// Output: "{"groups":[],"status":{"code":200,"messageResource":"string-serverres-success"}}"
console.log(str.replace(/\{"groupId":".*?","attributes":\{\}\},/,''));
// Output: "{"groups":[{"groupId":"02VXTCB","attributes":{"registrationId":"550049390"}},{"groupId":"W3UV5SD","attributes":{}},],"status":{"code":200,"messageResource":"string-serverres-success"}}"
.as-console-wrapper {
max-height: 100% !important;
}
Один с глобальным становится жадным и удаляет группы даже с атрибутом, а другой без g просто удаляет первое совпадение. Поскольку JSON довольно большой по размеру (~ 10 МБ), для меня не вариант перед уменьшением размера строки.