猿问

如何将 json.loads 解析为字符串转换为字典 python

标题可能具有误导性。我有一个要加载的 json 文件,如下所示:


{"parent": [

  {"venue": "SE", 

  "city": "some name", 

  "Rating": 2, 

  "location": {"x": 100.0, "y": 1.0}, 

  "pubMillis": 1581373546000}

  ], 

"startTime": "2020-02-12 00:00:00:000", 

"endTime": "2020-02-12 00:01:00:000"

}

{"parent": [

  {"venue": "PP", 

  "city": "some name 2", 

  "Rating": 2, 

  "location": {"x": 101.0, "y": 2.0}, 

  "pubMillis": 1581373546000}

  ], 

"startTime": "2020-02-12 00:00:00:000", 

"endTime": "2020-02-12 00:05:00:000"

}

如图所示,每个parent键都由分隔。\n


我想读这个,这是我的代码:


with open('filename.json', 'r') as content_file:

    content = content_file.read()

records = json.loads(json.dumps(content))


print(type(records)) #return as str

如果我写records = json.loads(content),我会得到以下错误:


json.decoder.JSONDecodeError:额外数据:第 2 行第 1 列(字符 517)


因此,json.loads(json.dumps(content))似乎工作。但是,我了解到转换dumps->loads将返回 asstr而不是dict. 因此,我无法访问诸如此类的项目,records["parents"]["location"]因为它们是字符串形式的。


那么,如何通过转换str为访问内部项目dict?


饮歌长啸
浏览 91回答 1
1回答

30秒到达战场

这是问题看起来要么你有多个子文件,要么{.....}是一个 json要么那些({.....})应该在一个数组中......我已经在数组方法下面展示了a = '''{"parent": [  {"venue": "SE",   "city": "some name",   "Rating": 2,   "location": {"x": 100.0, "y": 1.0},   "pubMillis": 1581373546000}  ], "startTime": "2020-02-12 00:00:00:000", "endTime": "2020-02-12 00:01:00:000"}{"parent": [  {"venue": "PP",   "city": "some name 2",   "Rating": 2,   "location": {"x": 101.0, "y": 2.0},   "pubMillis": 1581373546000}  ], "startTime": "2020-02-12 00:00:00:000", "endTime": "2020-02-12 00:05:00:000"}'''a = [i.strip() if i.strip()!='}' else i.strip()+',' for i in a.split('\n') ]a = '\n'.join(a)a= '[\n'+a[:-1]+'\n]'import json a=json.loads(a) print(a)[{'endTime': '2020-02-12 00:01:00:000',  'parent': [{'Rating': 2,    'city': 'some name',    'location': {'x': 100.0, 'y': 1.0},    'pubMillis': 1581373546000,    'venue': 'SE'}],  'startTime': '2020-02-12 00:00:00:000'}, {'endTime': '2020-02-12 00:05:00:000',  'parent': [{'Rating': 2,    'city': 'some name 2',    'location': {'x': 101.0, 'y': 2.0},    'pubMillis': 1581373546000,    'venue': 'PP'}],  'startTime': '2020-02-12 00:00:00:000'}]这就是您获取数据的方式a=json.loads(a) #print(a)print(a[0]['parent'][0]['location']){'x': 100.0, 'y': 1.0}如果你想将文件读入内存a = "".join([i for i in open('yourFileLocation','r').readlines()])现在你a在内存中有一个多行字符串
随时随地看视频慕课网APP

相关分类

Python
我要回答