Форматирование данных веб-сервиса - массив объектов - PullRequest
0 голосов
/ 18 октября 2018

Рассмотрим веб-сервис, который предоставляет фрагменты данных в формате JSON в виде объекта или массива объектов.Например:

/* original data */
{
    "departments": {
        "accounting": {
            "name": "Jane Doey",
            "age": "38"
        },
        "advertisement": [
            {
                "name": "Mary Elizabeth",
                "age": "22"
            },
            {
                "name": "Arthur Cobb",
                "age": "34"
            },
            {
                "name": "William Doubtfire",
                "age": "52"
            }
        ]
    }
}

При переборе этого JSON я перебираю «отделы» и вижу, что значение «accounting» - это объект, представляющий персонал, а значение «advertising» - массивиз трех объектов каждый персонал.Так что мне нужно

  1. Сначала проверить тип данных
  2. Если это объект, считать его персоналом
  3. Если это цикл массива, хотя его нужно найтисотрудники в этом списке.

Я уже видел этот прежний подход во многих веб-сервисах. Не лучше ли построить JSON, чтобы, даже если в отделе был только один персонал, он все равно представлял собой массив (содержащий один элемент)?Это было бы намного проще итерации и избавило бы от необходимости проверки типа.

/* my alternative */
{
    "departments": {
        "accounting": [
            {
                "name": "Jane Doey",
                "age": "38"
            }
        ],
        "advertisement": [
            {
                "name": "Mary Elizabeth",
                "age": "22"
            },
            {
                "name": "Arthur Cobb",
                "age": "34"
            },
            {
                "name": "William Doubtfire",
                "age": "52"
            }
        ]
    }
}

Мой вопрос:

Интересно, это результат плохого дизайна или естьвеские основания для этого.Может кто-нибудь захочет объяснить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...