Python - 将数据附加到json文件

时间:2017-10-23 18:10:25

标签: python json

我的c.json文件中包含以下数据:

{
    "192.168.0.129": {
        "username": "me", 
        "streaming": "Spotify", 
        "name": "John", 
        "email": "john@gmail.com"
    }
}

以及我要将其附加到的其他数据:

new_data = {'next_songs': ['song1', 'song2']}

为此目的,我这样做:

with open('c.json', 'r') as json_data: 
    data = json.load(json_data)

data.update(new_data)

with open('c.json', 'w') as json_data: 
    json.dump(data, json_data, indent=4)

这有效,但不是很好,因为我得到了:

{
    "next_songs": [
        "song1", 
        "song2"
    ], 
    "192.168.0.129": {
        "username": "me", 
        "streaming": "Spotify", 
        "name": "John", 
        "email": "john@gmail.com"
    }
}

我希望附加数据成为键"192.168.0.129"下的值,如下所示:

{
    "192.168.0.129": {
        "username": "me", 
        "streaming": "Spotify", 
        "name": "John", 
        "email": "john@gmail.com"
        "new_data": ["song1", "song2"], 
    }
}

我该如何实现这个目标?

2 个答案:

答案 0 :(得分:1)

只应更新某个dict属性"192.168.0.129"(这是内部字典),而不是整个主要字典:

...
data["192.168.0.129"].update(new_data)

答案 1 :(得分:1)

看起来您可能正在更新错误的词典

data.update(new_data)应为data["192.168.0.129"].update(new_data)