另一个Python在JSON数组上循环
我花了几个小时在这上面,尝试了我在网上找到的一切,拔了一些我头上的头发。。。 我已将此JSON发送到我正在编写的Flask Web服务:另一个Python在JSON数组上循环,python,json,Python,Json,我花了几个小时在这上面,尝试了我在网上找到的一切,拔了一些我头上的头发。。。 我已将此JSON发送到我正在编写的Flask Web服务: {'jsonArray': '[ { "nom":"0012345679", "Start":"2018-08-01", "Finish":"2018-08-17", "Statut":"Validee" }, { "nom":"0012345679",
{'jsonArray': '[
{
"nom":"0012345679",
"Start":"2018-08-01",
"Finish":"2018-08-17",
"Statut":"Validee"
},
{
"nom":"0012345679",
"Start":"2018-09-01",
"Finish":"2018-09-10",
"Statut":"Demande envoyée au manager"
},
{
"nom":"0012345681",
"Start":"2018-04-01",
"Finish":"2018-04-08",
"Statut":"Validee"
},
{
"nom":"0012345681",
"Start":"2018-07-01",
"Finish":"2018-07-15",
"Statut":"Validee"
}
]'}
我只想循环浏览记录:
app = Flask(__name__)
@app.route('/graph', methods=['POST'])
def webhook():
if request.method == 'POST':
req_data = request.get_json()
print(req_data) #-> shows JSON that seems to be right
##print(type(req_data['jsonArray']))
#j1 = json.dumps(req_data['jsonArray'])
#j2 = json.loads(req_data['jsonArray'])
#data = json.loads(j1)
#for rec in data:
# print(rec) #-> This seems to consider rec as one of the characters of the whole JSON string, and prints every character one by one
#for key in data:
# value = data[key]
# print("The key and value are ({}) = ({})".format(key, value)) #-> TypeError: string indices must be integers
for record in req_data['jsonArray']:
for attribute, value in rec.items(): #-> Gives error 'str' object has no attribute 'items'
print(attribute, value)
我相信我在JSON对象、python dict对象和字符串之间迷失了方向,但我不知道我遗漏了什么。我确实尝试过通过JSON.dumps和JSON.loads方法来放置接收到的JSON,但仍然没有。我错过了什么
我只想循环遍历每条记录,创建另一个python对象,并将其馈送到图表库,如下所示:
df = [dict(Task="0012345678", Start='2017-01-01', Finish='2017-02-02', Statut='Complete'),
dict(Task="0012345678", Start='2017-02-15', Finish='2017-03-15', Statut='Incomplete'),
dict(Task="0012345679", Start='2017-01-17', Finish='2017-02-17', Statut='Not Started'),
dict(Task="0012345679", Start='2017-01-17', Finish='2017-02-17', Statut='Complete'),
dict(Task="0012345680", Start='2017-03-10', Finish='2017-03-20', Statut='Not Started'),
dict(Task="0012345680", Start='2017-04-01', Finish='2017-04-20', Statut='Not Started'),
dict(Task="0012345680", Start='2017-05-18', Finish='2017-06-18', Statut='Not Started'),
dict(Task="0012345681", Start='2017-01-14', Finish='2017-03-14', Statut='Complete')]
整个过程都用单引号括起来,这意味着它是一个字符串,您需要解析它
for record in json.loads(req_data['jsonArray']):
查看您的注释代码,您做到了以下几点:
j1 = json.dumps(req_data['jsonArray'])
data = json.loads(j1)
在字符串上使用json.dumps
是一个错误的想法,而且json.loads(json.dumps(x))
与x
完全相同,因此它让您回到了开始的地方,即data
与req_data['jsonArray']
(字符串)是一样的
这是正确的想法:
j2 = json.loads(req_data['jsonArray'])
但您从未使用过j2
正如您所看到的,对字符串进行迭代可以得到字符串中的每个字符。Man。。。谢谢实际上我试着使用j2:
作为j2中的键:value=j2[key]
,但我得到的是列表索引必须是整数或片,而不是dict
,请问,这是否意味着我一开始没有得到正确的JSON?整个过程不应该用单引号括起来?是的,j2
是一个dict列表,不能将其视为dict。是的,request.get_json()
应该返回一个完全解析的数据结构req_data['jsonArray']
应该已经是一个列表。