JSON конструкция конструкции однотипных объектов. Должен ли я использовать массив для хранения или объект с разными ключами для хранения? - PullRequest
0 голосов
/ 06 апреля 2020

Я знаю, что название не совсем понятно, пожалуйста, посмотрите на приведенные ниже примеры.

Мне нужно сохранить некоторые данные со схожей структурой в файле JSON, и приложение выполнит поиск данные и вернуть конкретный объект. Например, если введено значение overview, приложение вернет значения layout и url (см. JSON ниже).

Моя первая мысль - сохранить данные в виде массива, поскольку это более логично, так как данные имеют схожую структуру и не имеют взаимосвязи между собой:

[
    {
        "page": "overview",
        "layout": "layout_a",
        "urls": [
            ["url1", "url2", "url3"],
            ["url4", "url5", "url6"],
            ["url7", "url8"]
        ]
    },
    {
        "page": "frontpage",
        "layout": "layout_b",
        "urls": [
            ["url1", "url2", "url3"],
            ["url4", "url5"]
        ]
    },
    ...
]

Количество сохраняемых объектов, возможно, от 20 до 30. И я боюсь, что циклический цикл над массивом выше может вызвать накладные расходы приложения, так как к нему будет большое количество запросов. Поэтому у меня есть другая идея использовать объекты с ключами для хранения данных:

{
    "overview": {
        "layout": "layout_a",
        "urls": [
            ["url1", "url2", "url3"],
            ["url4", "url5", "url6"],
            ["url7", "url8"]
        ]
    },
    "frontpage": {
        "layout": "layout_b",
        "urls": [
            ["url1", "url2", "url3"],
            ["url4", "url5"]
        ]
    }
}

Таким образом, я могу получить нужные данные только по имени ключа, то есть pages['overview'], вместо того, чтобы выполнять поиск по массив снова и снова. Проблема в том, что этот дизайн кажется нелогичным, потому что overview и frontpage являются своего рода взаимоисключающими и не являются "свойствами" объекта.

Может кто-нибудь посоветовать и дать мне несколько идей?

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