Получается что этот json и в принципе функционал нужно на фронте создавать, а не на беке?
По поводу уникального ключа, а если еще раз добавили товар с теме же атрибутами, то он должен сложиться + 1 к уже существующему, а по логике описанной выше сгенерируется новый id товара и в корзине это будет тоже отдельный товар.
И еще есть нюанс, что у модификатора есть своя цена, которая меняет собой цену товара по умолчанию, ну и у добавок есть своя цена, но в их случаи это + к цене в корзине