Зефир реструктурирует вложенные данные, чтобы стать ключом? - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть приложение flask_restful, использующее flask_sqlalchemy, которое получает данные из двух таблиц, связанных внешним ключом, и разделяет отношение «один ко многим». Родительская таблица содержит записи, а подчиненная таблица содержит версии этих записей. Используя flask_marshmallow, я возвращаю данные в довольно приличной форме, которая выглядит примерно так:

[
  {
    "currentVersion": null,
    "geometryOutputId": 251,
    "someInfo": "blah",
    "versions":[
      {
        "version": 1,
        "versionId": 223,
        "filePath": "path1"        
      },
      {
        "version": 2,
        "versionId": 224,
        "filePath": "path2"
      }        
    ]
  }
]

Таблица с одной стороны отношения один ко многим содержит данные currentVersion, geometryOutputId и someInfo. И по многим сторонам у нас есть version, versionId и filePath. Проблема в том, что я хочу, чтобы пользователь мог легко получить доступ к версии, что не может быть легко сделано с помощью приведенного выше JSON. Вам придется перебирать все версии в поисках нужной. Что мне действительно нравится, так это что-то вроде

[
  {
    "currentVersion": null,
    "geometryOutputId": 251,
    "someInfo": "blah",
    "versions" : {
      "1" : {
        "versionId": 223,
        "filePath": "path1"        
      },
      "2": {
        "versionId": 224,
        "filePath": "path2"
      }
    }
  }
]

, чтобы пользователь мог написать что-то вроде jsonObject[0]['versions']['2'], чтобы получить доступ к информации для версии 2. Я немного осмотрелся и Я не могу найти ничего, что решает такую ​​проблему, одна из главных проблем заключается в том, что для этого требуется, чтобы значение в паре ключ-значение было преобразовано в ключ. Т.е. "version": 1 становится "versions": { "1": {...} }

Если у кого-нибудь были какие-либо идеи о том, как справиться с этим? Либо в «Зефире», либо в другом инструменте.

...