使用python将包含JSON对象的文件解析到数据库中

使用python将包含JSON对象的文件解析到数据库中,python,json,simplejson,Python,Json,Simplejson,我有一个文件,每行包含一个JSON对象,这意味着整个文件不是有效的JSON,但只有每行本身是有效的 我要做的是迭代文件,将每一行转换为JSON,然后打印值,这很简单,因为只有每一行本身才是有效的JSON 该文件如下所示: {json object 1} {json object 2} {json object 3} {json object 4} {"event":"Session","properties":{"time":1423353612,"duration":33}} 每个JSON

我有一个文件,每行包含一个JSON对象,这意味着整个文件不是有效的JSON,但只有每行本身是有效的

我要做的是迭代文件,将每一行转换为JSON,然后打印值,这很简单,因为只有每一行本身才是有效的JSON

该文件如下所示:

{json object 1}
{json object 2}
{json object 3}
{json object 4}
{"event":"Session","properties":{"time":1423353612,"duration":33}}
每个JSON对象如下所示:

{json object 1}
{json object 2}
{json object 3}
{json object 4}
{"event":"Session","properties":{"time":1423353612,"duration":33}}
我尝试运行的代码没有成功,如下所示:

import simplejson as json
with open("sessions.json", "r") as f:
    for line in f:
        j=json.JSONEncoder().encode(line)
        print j['event']['time']
        print j['event']['duration']
我得到以下错误:

TypeError: string indices must be integers, not str
你知道为什么吗


谢谢

你打错电话了。从JSON字符串到Python对象的转换是解码,而不是编码。在任何情况下,最好使用
json
模块中的顶级函数,而不是底层类本身

for line in f:
    j = json.loads(line)
编辑

给定您显示的结构,
j['event']
是字符串“Session”,它没有子属性
time
。看起来你的意思是
j['properties']['time']