Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在flask get请求中将put格式化为Json_Python 3.x_Flask_Flask Restful - Fatal编程技术网

Python 3.x 如何在flask get请求中将put格式化为Json

Python 3.x 如何在flask get请求中将put格式化为Json,python-3.x,flask,flask-restful,Python 3.x,Flask,Flask Restful,我对烧瓶很陌生, 基本上我有一个返回多个值的代码 length= len(data['hits']['hits']) for i in range(length): #print(i) #print (data['hits']['hits'][i]['_source']['message']) imei=((data['hits']['hits'][i]['_source']['GPS-LOG'].get("IMEI"))) print ("imei: {}".format(

我对烧瓶很陌生, 基本上我有一个返回多个值的代码

length= len(data['hits']['hits'])


for i in range(length):
  #print(i)
  #print (data['hits']['hits'][i]['_source']['message'])
  imei=((data['hits']['hits'][i]['_source']['GPS-LOG'].get("IMEI")))
  print ("imei: {}".format(imei))
  log_time=((data['hits']['hits'][i]['_source']['@timestamp']))
  print ("log time: {}".format(log_time))

发出:-

imei: 44444
log time: 2019-09-21T23:31:28.429Z
imei: 55555
log time: 2019-09-21T23:32:02.554Z
imei: 22222
log time: 2019-09-21T23:32:04.561Z
imei: 555555
log time: 2019-09-21T23:32:14.591Z
我在flask GET方法中使用该脚本

@app.route('/battery/<string:get_imei>')
def get_battery(get_imei):
 length= len(data['hits']['hits'])
    for i in range(length):

    imei=(data['hits']['hits'][i]['_source']['GPS-LOG'].get("IMEI"))
    #print ("imei: {}".format(imei))
    log_time=((data['hits']['hits'][i]['_source']['@timestamp']))
    d = datetime.datetime.strptime(log_time,"%Y-%m-%dT%H:%M:%S.%fZ")
    new_format = "%Y-%m-%d"
    d.strftime(new_format)
    print ("log time: {}".format(d))
    return jsonify ('{} {}'.format(imei, d))
@app.route(“/battery/”)
def获取电池(获取imei):
长度=长度(数据['hits']['hits'])
对于范围内的i(长度):
imei=(数据['hits']['hits'][i]['u source']['GPS-LOG'].get(“imei”))
#打印(“imei:{}”。格式(imei))
日志时间=((数据['hits']['hits'][i]['u source']['@timestamp']))
d=datetime.datetime.StrTime(日志时间,“%Y-%m-%dT%H:%m:%S.%fZ”)
新格式=“%Y-%m-%d”
d、 strftime(新格式)
打印(“记录时间:{}”。格式(d))
返回jsonify({}{}.format(imei,d))

但是它不会返回多个值,它只返回一个值,我也不能使它成为json格式,比如{'imei':'22222','logtime':'2019-09-21'},…。

只需用

return jsonify(imei = imei, logtime = d)

应该会得到预期的结果。

您可以使用JSON数组来实现。首先,您需要通过迭代值列表并将dict追加到列表中,将每一对添加到dict中。在此jsonify之后,列出所有值。 从代码块看,似乎只会返回第一个值,因为jsonify只会在单个值上返回JSON格式,无论是it列表还是任何其他dict

    #say you have two lists of imei and corresponding logtime
    imei=[44444,55555,22222,55555]
    logtime=['2019-09-21T23:31:28.429Z','2019-09-21T23:32:02.554Z','2019-09-21T23:32:04.561Z','2019-09-21T23:32:14.591Z']

    #to add each entry in JSON format in an array containing two fields, you need to create a temp dict and append it in list
    result=[]

    # we need to iterate over each element and add it to the dict and then add the dict to list
    for i in range(len(imei)):
        # it is creating a temporary dict and appending it to the result list (array)
        tempDict={'imei':imei[i],'logtime':logtime[i]}
        result.append(tempDict)

    # after this return the result as JSON    
    return jsonify(result=result)
您的输出将如下所示

{"result":[{"imei":44444,"logtime":"2019-09-21T23:31:28.429Z"},{"imei":55555,"logtime":"2019-09-21T23:32:02.554Z"},{"imei":22222,"logtime":"2019-09-21T23:32:04.561Z"},{"imei":55555,"logtime":"2019-09-21T23:32:14.591Z"}]}


这里有一个类似的线程:

谢谢@Nadim Abrar,这是对json的转换,但它仍然没有显示多个值,它只显示最后的值。