通过Python将Json数据导入MongoDB
怪我咯
怪我咯 2017-04-18 10:29:42
0
3
544

首先数据是以标准的json格式的文本。然后想要通过python脚本来导入Mongodb中。
json

{
    "service": "http", 
    "datetime": "2017-03-28 17:23:19", 
    "starttime": "1490692810", 
    "endtime": "1490692999", 
    "port": 80
}{  
    "service": "ewall", 
    "datetime": "2017-03-28 17:23:19",
    "starttime": "1490692810", 
    "endtime": "1490692999", 
    "port": 1328
}

python部分代码:

with open(filen, 'r') as f:
        while 1:
            try:
                jsonstr = f.readline().strip()
                # print jsonstr 可以输出整个json的内容
                if not jsonstr:
                    break
                try:
                    j = json.loads(jsonstr) #这里好像不处理的问题
                    
                except:
                    continue
                jsonlist.append(j)
            except:
                break

请问这个情况要怎么解决呢?谢谢

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(3)
阿神

Masalah anda adalah kerana anda bukan dalam format json standard Format standard sepatutnya seperti ini

[{
    "service": "http", 
    "datetime": "2017-03-28 17:23:19", 
    "starttime": "1490692810", 
    "endtime": "1490692999", 
    "port": 80
},
{  
    "service": "ewall", 
    "datetime": "2017-03-28 17:23:19",
    "starttime": "1490692810", 
    "endtime": "1490692999", 
    "port": 1328
}]

Kedua, data anda dibaca dalam baris Sila beritahu saya rupa baris data anda

黄舟

Jawapan @sheep3 betul.

Jika anda meletakkan JSON terus ke MongoDB, anda boleh menggunakan mongoimport (https://docs.mongodb.com/manu...

Jika anda masih mahu memproses data, anda boleh menggunakan kod seperti ini:

import json
filename = 'test.json'

with open(filename, 'r') as f:
    content = json.load(f)

Jika kandungan fail JSON lebih besar daripada memori, anda harus membuka fail JSON melalui penstriman. Anda boleh menggunakan pakej ijson (https://pypi.python.org/pypi/...). Penggunaannya juga agak mudah:

import ijson

with open('test.json') as fp:
    objects = ijson.items(fp, "item")
    for object in objects:
        print(object)
迷茫

Jawapan @Christoph secara langsung menamakan penyelesaian yang lebih mudah dan dioptimumkan, dan saya mempelajari helah

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan