在python中从文件加载json数据

时间:2017-01-17 18:16:29

标签: python json file load

我使用以下代码从网页保存数据:

[...]
response = urllib2.urlopen(req)
the_page = response.read()
data_to_analyse = json.loads(the_page)
import datetime
datafile = open(str(datetime.datetime.now())+'_data.json','w')
datafile.write(str(data_to_analyse))
[...]

现在我尝试使用保存在数据文件中的数据,但我无法正确处理json。

数据文件启动示例部分

{
    u'SiteRep': {
                  u'DV': {
                           u'type': u'Obs', 
                           u'dataDate': u'2016-11-18T10:00:00Z', 
                           u'Location': [
                                            {
                                                u'elevation': u'15.0',
                                                u'name': u'BALTASOUND',
                                                u'i': u'3002'
[and so on - file closes correct...]

在我可以简单处理之前' data_to_analyse'用:

for SiteRep in data_to_analyse:
    for data_to_analyse_experience in data_to_analyse[SiteRep]:

一切正常。现在我收到错误:

**TypeError:** string indices must be integers, not str

如果我尝试使用该代码加载文件中的数据:

for datafile in os.listdir('.'):
    if datafile.endswith('.json'):
        data = open(datafile,'r').read()

        jsondata = json.dumps(data)

或:

**ValueError:** Expecting property name: line 1 column 2 (char 1)

with:

        jsondata = json.loads(data)

如何将文件转换为正确的json对象?

2 个答案:

答案 0 :(得分:1)

试试这个

import json

with open('strings.json') as json_data:
 d = json.load(json_data)
 print(d)

答案 1 :(得分:0)

实际上JSON ValueError: Expecting property name: line 1 column 2 (char 1)通过以下方式解决了问题:

    data_to_analyse = open(datafile,'r').read()
    data_to_analyse = data_to_analyse.replace("'",'"')
    data_to_analyse = data_to_analyse.replace("u\"",'"')
    jsondata = json.loads(data_to_analyse)