SQL Стильное соединение двух JSON объектов на первичном ключе - PullRequest
0 голосов
/ 05 мая 2020

В качестве очень простого примера, скажем, у меня есть 1 запрос API в формате JSON, который содержит следующие ключи для точки выборки данных, назовем его g [0], где g - это просто переменная, назначенная для запроса на получение. ответ, который был выполнен ранее в коде и проанализирован до объекта json с сотнями индексов:

{ "UnitID":"93439472", "Usage":30 }

И еще один запрос API в формате JSON имеет демографическую информацию c со следующими ключами и точкой данных образца, те же условия, что и объект JSON выше, однако мы можем назвать его f [3] (это исключительно для иллюстрации того факта, что индекс с UnitID = 93439472 может быть не таким же для обоих JSON объектов, даже с сортировкой по ключу UnitID):

{ "UnitID":"93439472", "PropertyName":"My Apartment Complex", "BuildingName":"Building 1", "ApartmentUnitName" = "Unit 101" }

Можно ли построить строку JSON, содержащую ApartmentUnitName, PropertyName, BuildingName и Usage, путем ссылки на ApartmentUnitID, как если бы вы использовали соединение SQL? В идеале вы получите конечный результат:

{ "UnitID":"93439472", "PropertyName":"My Apartment Complex", "BuildingName":"Building 1", "ApartmentUnitName" = "Unit 101", "Usage":"30" }

Обратите внимание, что существует несколько записей, и я не могу просто объединить g [0] и f [ 0], поэтому я указал выше, что вторая JSON запись, которую я указал, - это f [3], а не f [0].

Моей первой мыслью было бы итеративное l oop, которое будет объединять оба объекта JSON, если g.UnitID == f.UnitID. Есть ли какие-нибудь python библиотеки / модули, в которых есть функции, которые могут мне помочь? Или итеративный l oop самый элегантный способ подойти к этому? Не уверен, сколько времени будет на этом для тонны единиц для большего свойства, или как будет выглядеть синтаксис при слиянии, поскольку для этого потребуется целое число i для JSON объекта g и целое число j для JSON объекта f . Я думаю, что начал бы с f [j = 0], а затем l oop через все индексы i в g, пока не будет найдено совпадение, а затем перейду к следующему j в f и сбросил i в 0. Если он не найден, Я бы либо назначил Usage = Null, либо Usage = 0 и перешел к следующему j и сбросил i до 0.

...