Массив в данном случае сильно хуже по тем же причинам что вы описали. Добавится 10 параметров - и хер поймешь какой что значит. + это не обеспечивает уникальность, затрудняет поиск (полный перебор если напрямую в массивы парсить а не в словарь/ассоциативный массив/карту).
Решение в ТЗ тоже не найс (проблемы с расширением, да), но и ваше не лучше.
Мой вариант который хотя бы ближе к ТЗ:
{
"items": {
1234: {
"count":1
}
}
}
Если очень не хочется делать GUID ключем (хотя непонятно почему - он то уникален) - то можно так:
{
"items": [
{
"guid":1234,
"count":1
}
]
}