Flask以字符串形式的JSON而不是JSON的形式返回一些响应对象

时间:2018-08-18 18:54:41

标签: python json flask

我想从烧瓶路线返回五个变量。看来,无论我如何格式化它们,除了看起来像JSON的字符串外,其中两个都不会返回任何内容。

我的烧瓶路线看起来像这样

@app.route('/mapcreator/<lat>/<lng>', methods=['GET', 'POST'])
def receive_coords(lat, lng):
    lat = float(lat)
    lng = float(lng)
    point = (lat,lng)
    map1 = somefunction(point)
    number = ((somefunction(point))[0])
    featureCount = ((somefunction(point))[1])
    map2 = ((amb.somefunction(point))[2])
    response = make_response(jsonify(map1=map1, number=number, featureCount=featureCount, map2=map2, point=point))
    response.headers['content-type'] = 'application/json'
    return response

number,point,map1作为json对象正确返回。 Python中每个变量的类型:

  • 数字:int
  • 点:数组
  • map1:字典
  • map2:str
  • featureCount:str

这是后端中每个变量的处理方式:

  • map1:map1back = mplleaflet.fig_to_geojson(fig=ax.figure)打印为geojson,看起来像字典
  • map2:map2back = df_to_geojson(poi_df, col); map2back = json.dumps(poiGJ)

看起来像是标准的geojson

  • featureCount: featureCount = all_features['feature'].value_counts(); featureCount = featureCount.to_json()

看起来像标准的json

如果将这些类型更改为dict,我将得到

  

500内部服务器错误。

一切就绪后,他们将这样登录浏览器控制台:

featureCount:"{"parking":67,"bicycle_parking":32,"bench":20,"p.....

map2:"{"type": "FeatureCollection", "features": [{"geometry": {"type": "Point", "coo.....

它们不读为“ Object>”,而是读为JSON字符串。

我在这里尝试了所有东西,但我真的很沮丧。对于这两个响应对象,我看不到任何不同,也无法使它们成为真正的JSON响应。

预先感谢一百万!

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

response = make_response(jsonify(map1=map1, number=number, 
featureCount=json.loads(featureCount), 
map2=json.loads(map2), point=point))

必须将json与字符串(而不是JSON对象)类似json。熊猫只创建json样式字符串。