附加一个json并读回来

时间:2015-10-02 00:41:01

标签: python json

在事件上,我将事件附加到事件txt文件(重要的是我附加到文本文件而不是保留在内存中)之后我需要将10个事件累积到事件服务器 我的示例事件是:

data = {
            'node': os.popen('hostname').read(),
            'details': details,
            'time': calendar.timegm(time.gmtime())

    }

我能够追加,因此出现

{
    "node": "macbook.local\n", 
    "details": "Fire", 
    "time": 1443734264
}{
    "node": "macbook.local\n", 
    "details": "Fire", 
    "time": 1443734272
}

我无法读回来 尝试过:

with open(tmp_file) as source:
        json_source = source.read()
        data = json.loads('[{}]'.format(json_source))

但抛出异常。

可能我需要像对待列表那样对待它,这是唯一的方法吗?

- python newbie

2 个答案:

答案 0 :(得分:0)

首先,当您附加数据时,请确保在其末尾添加逗号:

{
    "node": "macbook.local\n", 
    "details": "Fire", 
    "time": 1443734264
},{
    "node": "macbook.local\n", 
    "details": "Fire", 
    "time": 1443734272
},

其次,当你重新格式化它时,只使用列表括号([]),而不是字典括号({}),如下所示:

    data = json.loads('[]'.format(json_source))

答案 1 :(得分:0)

您的问题是您没有将json格式化为适当的API。试试这个:

a='{"someid":{"node": "macbook.local","details": "Fire", "time": "1443734264"},"someid2":{"node": "macbook.local", "details": "Fire", "time": "1443734272"}}'
json.loads(a)
{'someid': {'details': 'Fire', 'node': 'macbook.local', 'time': '1443734264'}, 'someid2': {'details': 'Fire', 'node': 'macbook.local', 'time': '1443734272'}}