2015-02-05 2 views
0

У меня есть набор объектов json.Добавление объекта json к неназванному набору возражений json

[ 
    { 
    "group": "GroupName1", 
    "name": "Name1", 
    "nick": "Nick1", 
    "host": "Hostname1", 
    "user": "user1", 
    "sshport": "22", 
    "httpport": "80" 
    }, 
    { 
    "group": "GroupName2", 
    "name": "Name2", 
    "nick": "Nick2", 
    "host": "hostname2", 
    "user": "user2", 
    "sshport": "22", 
    "httpport": "80" 
    } 

] 

У меня есть сценарий CLI с raw_input и создание нового объекта Dict, содержащий новые параметры объекта как таковые:

def main(): 
    # CLI Input 
    group_in = raw_input("Group: ") 
    name_in = raw_input("Name: ") 
    nick_in = raw_input("Nick: ") 
    host_in = raw_input("Host: ") 
    user_in = raw_input("User: ") 
    sshport_in = raw_input("SSH Port: ") 
    httpport_in = raw_input("HTTP Port: ") 

    # New server to add 
    jdict = { 
     "group": group_in, 
     "name": name_in, 
     "nick": nick_in, 
     "host": host_in, 
     "user": user_in, 
     "sshport": sshport_in, 
     "httpport": httpport_in 
    } 

Предполагая, что файл JSON, содержащий вышеуказанные объекты JSon отформатированных как таковой загружен как:

with open(JSON_PATH, mode='r') as rf: 
    jf = json.load(rf) 

Я знаю, как сделать это путем взлома файл с помощью readlines/writelines, но как бы я добавить jdict в конце jf pythonically, так что я могу просто написать файл обратно с полным набором объектов, отформатированных таким же образом?

ответ

2

jf теперь просто список Python, так что вы можете добавить новый словарь в список:

jf.append(jdict) 

затем выписывать весь объект обратно в файл, заменяя старую строку JSON:

with open(JSON_PATH, mode='w') as wf: 
    json.dump(jf, wf) 
+0

Как обычно, я смущал его в процессе моей мысли. Спасибо. – oorahduc

Смежные вопросы