另一个Python在JSON数组上循环

另一个Python在JSON数组上循环,python,json,Python,Json,我花了几个小时在这上面,尝试了我在网上找到的一切,拔了一些我头上的头发。。。 我已将此JSON发送到我正在编写的Flask Web服务: {'jsonArray': '[ { "nom":"0012345679", "Start":"2018-08-01", "Finish":"2018-08-17", "Statut":"Validee" }, { "nom":"0012345679",

我花了几个小时在这上面,尝试了我在网上找到的一切,拔了一些我头上的头发。。。 我已将此JSON发送到我正在编写的Flask Web服务:

{'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']
应该已经是一个列表。