# #python #json #firebase
Вопрос:
У меня есть код на Python, в котором я могу получать данные из firebase cloud firestore только с помощью этого кода:
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
cred = credentials.Certificate("firebaseCredentials.json")
firebase_admin.initialize_app(cred)
db = firestore.client()
#read data
#Getting a Document with a known ID
results = db.collection('users').document('HtregtuuDDVWglz9DjobFGH9jMo1').collection('chats').get()
for result in results:
print(result.to_dict())
С помощью этого кода результат будет примерно таким:
{'message': 'works'}
{'message': 'this is a test'}
Также у меня есть файл json с некоторой случайной строкой, как вы можете видеть здесь:
"intents": [
{
"tag": "greeting",
"patterns": [
"Hi",
],
"responses": [
"Hey :-)",
]
}
}
Окей, вот мой чувак, есть ли какой-нибудь способ получить данные , которые я получаю из firebase (пример: «это тест»), преобразовать эту информацию в json и поместить ее в файл json (или в тот же файл ) вот так:
"intents": [
{
"tag": "firebase data1",
"patterns": [
HERE THE FIREBASE DATA (ex: this is a test)
],
"responses": [
HERE THE FIREBASE DATA (ex: this is a test)
]
},
{
"tag": "firebase data22",
"patterns": [
HERE THE FIREBASE DATA2 (ex: works)
],
"responses": [
HERE THE FIREBASE DATA2 (ex: works)
]
}
}
}
Комментарии:
1. работает ли
firebase data1
конкретно в паре сthis is a test
? Т. Е. Важен ли порядок ответа firebase при установке тега?2. Нет, это не важно, я имею в виду, что как только я получу данные из firebase, я просто хочу поместить данные (без какого-либо важного порядка) в файл json
Ответ №1:
Чтобы переформатировать данные firebase в структуре «намерения», похоже, вы можете:
intents = {"intents": []}
results = db.collection('users').document('HtregtuuDDVWglz9DjobFGH9jMo1').collection('chats').get()
for index, result in enumerate(results):
data = result.to_dict()
intents["intents"].append({
"tag": f"firebase data{index}",
"patterns": [data["message"]],
"responses": [data["message"]]
})
print(intents)