为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

饮歌长啸 2023-01-04 10:19:07
标题可能具有误导性。我有一个要加载的 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?
查看完整描述

1 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

这是问题


看起来要么你有多个子文件,要么{.....}是一个 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在内存中有一个多行字符串


查看完整回答
反对 回复 2023-01-04
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信