Как загрузить разные файлы JSON с несколькими объектами внутри и переменными полямиPython

Программы на Python
Ответить
Anonymous
 Как загрузить разные файлы JSON с несколькими объектами внутри и переменными полями

Сообщение Anonymous »

Я столкнулся с ситуацией, когда мне нужно загрузить разные файлы JSON с несколькими объектами внутри каждого, и эти файлы могут иметь переменные поля.
Моя цель: мне нужно загрузить два кадра данных 1 с исходным файлом (с загрузкой которого у меня нет проблем) и сравнить с файлом результата, который в моем вопросе является JSON. Мне нужно сравнить имена столбцов и значения. Я хотел бы загрузить все столбцы файла JSON по моему вопросу всего за один кадр данных, но когда я пытаюсь загрузить его, используя только pd.read_json, формат полностью испорчен.
Чтобы добавить больше контекста, мне нужно автоматизировать тест для сравнения исходных файлов (что не является проблемой, поскольку их формат подходит для работы) с файлами JSON, которые я собираюсь получить из API.
Проблема в том, что это текущий формат файла JSON, он содержит несколько объектов в одном файле, и поля могут различаться:

Код: Выделить всё

      {
"ingestionHeader": {
"geo": "BR",
"dataDomain": "BR_CNSMR_HDR",
"dataSubDomain": "ADDRESS",
"dataViewName": "NPUR_BR_CNSMR_HDR_ADDRESS_VIEW",
"dataViewVersion": "1.0.0",
"correlationId": "98ebe962-5766-49b1-8bb7-ac32f5fe3d75",
"sourceId": "8c236374-a72f-4719-a801-3473333f259d",
"regulatory": false,
"sourceTimestamp": 1730276037830,
"recordUUID": "dba020d9-7d7c-4a73-90e9-f4d23d040153",
"sourceRecordUUID": "dba020d9-7d7c-4a73-90e9-f4d23d040153",
"recordNumber": 1,
"entityKey": "",
"matchKey": "rDnzVxLfPq0Kahk9JSwLCFZGBm+gg1vwyM+7SlbyO/4RPvQzKi9tJzIBYv0C7qc9ueihBE64MC8zNdlcdtiyAA==",
"previousMatchKey": null,
"aggregatorId": null,
"dfContributorName": "BVS",
"dfContributionName": "",
"dfCorrelationId": "5b78d691-cca0-44b3-8e85-6c52f77a76ca",
"dfSourceId": "8c236374-a72f-4719-a801-3473333f259d",
"dfSourceTimestamp": 1730275570449,
"supplierId": "SUP111BVS",
"dateReported": 1721411970000,
"dateConversion": "SOURCE",
"recordAction": null,
"additionalInfo": {
"supplierSourceRecordId": "",
"dfSourceRecordUUID": "dba020d9-7d7c-4a73-90e9-f4d23d040153",
"recordHash": "710d6b4adf04e95fa7e9cfbc681725936c5622180c3ca51b2f3e9348149a3645"
},
"dfContributionId": null,
"contributionId": null,
"memberId": "MEM111BVS",
"journalingTimestamp": 1730276206258
},
"protectionInfo": {
"unprotected": true,
"protectionTime": 1730276037831,
"keyGenTime": 1727369754998,
"keyId": "691c2b9d-a611-4cb9-a42a-b4d4af9547d0",
"keyBytes": null,
"keystoreId": "479b6680-2784-435d-8638-db04a59849b0",
"keyIndex": 10,
"publicKeyType": null,
"asymmetricKeyUrl": null,
"asymmetricKeyVersion": null,
"asymmetricMd5": null,
"additionalInfo": null,
"encryptionMeta": "bu0006u0010u0002u001Au00051.0.0"
},
"metadata": {
"originCode": "45",
"sourceCode": "155",
"informantCode": "KND11867",
"informantIdNumber": null,
"updateUserId": null,
"dataCondition": "Inibido",
"originatingPurpose": "1",
"internalBVSId": "1",
"dateTimeInclusion": "2024-07-19T17:59:30+00:00",
"dateTimeInclusionFormat": "yyyy-MM-dd'T'HH:mm:ssXXX",
"_dateTimeInclusionEpoch": 1721411970000,
"loadBatchId": "21905"
},
"consumerIdNumber": "",
"_consumerIdNumberHashed": "",
"dateTimeCapture": null,
"dateTimeCaptureFormat": null,
"address": {
"propertyICMSRate":  null,
"installationCode": null,
"typeAddress": null,
"state": "PE",
"dateBeginRelation": null,
"dateBeginRelationFormat": null,
"dateBeginResidence": null,
"dateBeginResidenceFormat": null,
"zipCode": null,
"complementAddress": null,
"iBGECodeCity": "",
"streetName": null,
"addressLatitude": null,
"addressLongitude": null,
"neighborhood": "GOIANA",
"cityName": "74",
"addressNumber": "",
"typeStreet": null,
"letterProtocolId": null,
"typeZipCode": "0",
"returnCodeAddress": "0",
"returnCodeZipCode": null,
"streetNameId": "",
"addressNumberId": "b664f22125061b58605b0510a35443ab",
"addressComplementId": "7",
"metricAddress": ""
}
}

Я попытался использовать простую команду для загрузки файла в фрейм данных с помощью pandas, но результат оказался совершенно запутанным.

Подробнее здесь: https://stackoverflow.com/questions/791 ... able-field
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»