#python #json #pandas
Вопрос:
У меня есть json, который выглядит так:
{
"response": {
"docs": [{
"region_s" : "North America",
"country_s": "Panama",
"ArticleHeading_s": "The expected vaccination process begins in Chiriquí",
"ArticleDate_s": "Fri Jun 18 17:29:07 UTC 2021",
"refined_summary_t": "Este jueves 13 de mayo la Operación PanavaC-19 inició el proceso de inmunización a los adultos mayores de 60 ",
"id": "http://www.minsa.gob.pa/noticia/arranca-esperado-proceso-de-vacunacion-en-chiriqui",
"source_type_s": "Guidances/Regulations",
"curation_date_t":"12 Jun 2021 to 28 Jun 2021"
},
{
"region_s" : "North America",
"country_s": "US",
"ArticleHeading_s": "Emergency Use Authorization for Vaccines to Prevent COVID-19: Guidance for Industry",
"ArticleDate_s": "Fri Jun 15 17:29:07 UTC 2021",
"refined_summary_t": "<ol><li> first list</li> Second</li></ol>",
"id": "http://www.minsa.gob.pa/noticia/arranca-esperado-proceso-de-vacunacion-en-chiriqui",
"source_type_s": "Press Releases/News",
"curation_date_t":"12 Jun 2021 to 18 Jun 2021"
}]
Я конвертирую его в рамку pandas, добавляю некоторые данные, а затем мне нужно преобразовать их обратно в json. Мой окончательный df выглядит примерно так
Я хочу иметь возможность преобразовать его обратно в json. Вот как выглядит код
out = {"response" : {"docs" : {[]} }}
out["response"]["docs"].append(df.to_json(orient='records')[1:-1].replace("'{","{" ))
print(out)
with open('file_name.json', 'w') as f:
f.write(out)
К сожалению, это выдает ошибку:
Traceback (most recent call last):
File "C:Usersfatima.arshadPycharmProjectspythonProjectmain.py", line 42, in <module>
out = {"response" : {"docs" : {[]} }}
TypeError: unhashable type: 'list'
Ответ №1:
Я думаю, что этого будет достаточно:
docs = df.to_dict('records')
out = {
"response":{
"docs":docs,
},
}
и сбросьте словарь out в файл json
Ответ №2:
Я думаю, что проблема в этой линии:
out = {"response" : {"docs" : {[]} }}
Где docs
должно быть a list
, вы объявили его как a set
с элементом изменяемого типа, что не является законным. Я предполагаю, что вы имели в виду:
out = {"response" : {"docs" : [] }}