Здравствуйте, добрый год 2017 всем!Преобразование списка dicts в dict of dicts для отправки «сложного» json to cloudant
У меня проблемы с отправкой тихого комплекса json в облачную БД. Насколько я понимаю (и это не очень далеко, потому что я всего новичку), единственный способ отправить файл на Cloudant БД с Cloudant для питона сделать переменную «данные»
data = {
'_ID': 'userInfo',
'Name': 'Manu'
'Age': 23,
'Hobbies': ['cloudant', 'python', 'dockers']
}
и использовать команду
my_document = my_database.create_document(data)
, которые успешно создать файл в БД.
BUT выглядит так, как будто все сложнее, когда данные не находятся внутри dict, потому что в какой-то момент метод .create_document() пытается извлечь ключи и значения, и это дико, когда вы даете ему список ссылка на ошибку консоли : https://www.jepix.fr/images/cloudanterror.png
, но это не обычный список, который я стараюсь дать ему, это великолепный список dicts :-)
[
{dict1},
{dict2},
{dict3},
{dict4},
{ },
{ },
{ },
{ },
{ }
]
с чудесной dicts внутри dicts :-D Я думаю, мне нужен способ конвертировать список dicts в dict of dicts и я АБСОЛЮТНО HA VE Чтобы сохранить эту структуру dict, потому что она используется шаблонами других коллег, парсером и т. Д., Или дно моего ученика будет беспощадно избито! отчаянного шаг
import cloudant
import json
from cloudant.client import Cloudant
client = Cloudant("USR", "PWD", url)
client.connect()
# Client tasks ##########################################
session = client.session()
print 'Username: {0}'.format(session['userCtx']['name'])
print 'Databases: {0}'.format(client.all_dbs())
my_db = client['scenario-json']
with open('scenarioGenerated.json', 'r') as fp:
json_str = fp.read()
json_dict = json.loads(json_str)
my_doc = my_db.create_document(json_dict)
client.disconnect()
Я Пытался, весь новичок, как разыгрывается список в Словарь с функцией Dict(), но я получил ошибку аргумента, говоря мне, что я не достаточно аргумента для вызова этой функции (в этот момент я ужасно его принял и искал другой выход)
Я также попробовал json-библиотеку для python с json.load/.loads/.dump/.dumps, но это та же проблема, что и преобразование json в строку (повторение цикла на Объект «str» не имеет ошибки атрибута «get»)
Я видел, может быть, решение на переполнение: Python dump dict to json file
Но мне нужно сделать противоположное, например, прочитать json и заполнить диктофон? Я не думаю, что это самые умные шаги, так как процесс заполнения dict может потерять иерархию dict ...
Итак, если у вас есть хороший способ конвертировать список dicts в dict dicts, это будет будь так хорош!
Извините за длинный пост и очень noobish вопрос, но я как планктон в море китов, и это не очень хорошая ситуация :-p
Большое спасибо.
Пожалуйста, покажите код, который вы пробовали, так что и может получить помощь здесь –
Ничего не знаю о Cloudant, но в [documentation] (https://docs.cloudant.com/document.html) указано, что кроме обязательных полей '_id' и' _rev' документы могут содержать практически любой другой JSON, который вы хотите. Так что не будет что-то вроде '{" _id ":" foo "," _rev ":" bar "," my_array ": [...]}' будет лучше? – ThisSuitIsBlackNot
@SivaCn сделано, это должно работать, потому что это то, что я сделал, когда тренировался с сокетом, я использовал для загрузки и сбрасывал json в виде строки, чтобы отправить ее через сокеты. – Manu