2015-02-05 71 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黑客的文件要做到这一点,但我将如何在年底增加 pythonically所以我可以只写回文件与完全新的对象以相同的方式格式化?

回答

2

jf现在只是一个Python列表,这样你就可以添加新的字典到列表:

jf.append(jdict) 

然后写出整个对象返回给您的文件,取代旧的JSON字符串:

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

像往常一样,我在思考过程中过度复杂。谢谢。 – oorahduc 2015-02-05 22:15:42