Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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 如何在django中返回此JSON而不转义?_Python_Json_Django_Pandas - Fatal编程技术网

Python 如何在django中返回此JSON而不转义?

Python 如何在django中返回此JSON而不转义?,python,json,django,pandas,Python,Json,Django,Pandas,在我的Django项目中,我试图返回一个JsonResponse,但是返回的数据正在“某处”转义。当我通过Jupyter笔记本运行代码时,我没有问题。我的数据帧结构是: 我的Django响应读取我的数据帧pickle并按如下方式处理: def API_FTEs_month(request, storeCode): df1=pd.read_pickle(storeCode+'.pickle') result=(df1.groupby(['Date','Job Role'], a

在我的Django项目中,我试图返回一个
JsonResponse
,但是返回的数据正在“某处”转义。当我通过Jupyter笔记本运行代码时,我没有问题。我的数据帧结构是:


我的Django响应读取我的数据帧pickle并按如下方式处理:

def API_FTEs_month(request, storeCode):
    df1=pd.read_pickle(storeCode+'.pickle')
    result=(df1.groupby(['Date','Job Role'], as_index=False)
        .apply(lambda i: i[['Department', 'Team', 'Days']].to_dict('r'))
         .reset_index()
         .rename(columns={0: 'Assignments'})
         .to_json(orient='records'))
return JsonResponse(result, safe=False)
"[{\"Date\":\"2017-12-31\",\"Job Role\":\"Junior\",\"Assignments\":[{\"Department\":\"Electronics\",\"Team\":\"A\",\"Days\":12.8311126233},{\"Department\":\"Electronics\",\"Team\":\"B\",\"Days\":9.7797036952},{\"Department\":\"Electronics\",\"Team\":\"C\",\"Days\":12.4532628859},{\"Department\":\"Household\",\"Team\":\"A\",\"Days\":13.2005991473},{\"Department\":\"Household\",\"Team\":\"B\",\"Days\":11.2217690247},{\"Department\":\"Household\",\"Team\":\"C\",\"Days\":9.9799650502}]},{\"Date\":\"2017-12-31\",\"Job Role\":\"Senior\",\"Assignments\":[{\"Department\":\"Electronics\",\"Team\":\"A\",\"Days\":12.3088204188},{\"Department\":\"Electronics\",\"Team\":\"B\",\"Days\":11.6027520428},{\"Department\":\"Electronics\",\"Team\":\"C\",\"Days\":8.4242249342},{\"Department\":\"Household\",\"Team\":\"A\",\"Days\":10.2680664459},{\"Department\":\"Household\",\"Team\":\"B\",\"Days\":10.7355819544},{\"Department\":\"Household\",\"Team\":\"C\",\"Days\":14.4751405746}]},{\"Date\":\"2018-01-31\",\"Job Role\":\"Junior\",\"Assignments\":[{\"Department\":\"Electronics\",\"Team\":\"A\",\"Days\":9.8390990646},{\"Department\":\"Electronics\",\"Team\":\"B\",\"Days\":7.8840336082},{\"Department\":\"Electronics\",\"Team\":\"C\",\"Days\":7.4098884623},{\"Department\":\"Household\",\"Team\":\"A\",\"Days\":6.5804561812},{\"Department\":\"Household\",\"Team\":\"B\",\"Days\":7.9109739164},{\"Department\":\"Household\",\"Team\":\"C\",\"Days\":7.6766255979}]},{\"Date\":\"2018-01-31\",\"Job Role\":\"Senior\",\"Assignments\":[{\"Department\":\"Electronics\",\"Team\":\"A\",\"Days\":5.9779944185},{\"Department\":\"Electronics\",\"Team\":\"B\",\"Days\":7.8300778676},{\"Department\":\"Electronics\",\"Team\":\"C\",\"Days\":7.9050436379},{\"Department\":\"Household\",\"Team\":\"A\",\"Days\":6.9225874658},{\"Department\":\"Household\",\"Team\":\"B\",\"Days\":7.6001780124},{\"Department\":\"Household\",\"Team\":\"C\",\"Days\":6.5897367619}]}]"
我不知道为什么,但反应如下:

def API_FTEs_month(request, storeCode):
    df1=pd.read_pickle(storeCode+'.pickle')
    result=(df1.groupby(['Date','Job Role'], as_index=False)
        .apply(lambda i: i[['Department', 'Team', 'Days']].to_dict('r'))
         .reset_index()
         .rename(columns={0: 'Assignments'})
         .to_json(orient='records'))
return JsonResponse(result, safe=False)
"[{\"Date\":\"2017-12-31\",\"Job Role\":\"Junior\",\"Assignments\":[{\"Department\":\"Electronics\",\"Team\":\"A\",\"Days\":12.8311126233},{\"Department\":\"Electronics\",\"Team\":\"B\",\"Days\":9.7797036952},{\"Department\":\"Electronics\",\"Team\":\"C\",\"Days\":12.4532628859},{\"Department\":\"Household\",\"Team\":\"A\",\"Days\":13.2005991473},{\"Department\":\"Household\",\"Team\":\"B\",\"Days\":11.2217690247},{\"Department\":\"Household\",\"Team\":\"C\",\"Days\":9.9799650502}]},{\"Date\":\"2017-12-31\",\"Job Role\":\"Senior\",\"Assignments\":[{\"Department\":\"Electronics\",\"Team\":\"A\",\"Days\":12.3088204188},{\"Department\":\"Electronics\",\"Team\":\"B\",\"Days\":11.6027520428},{\"Department\":\"Electronics\",\"Team\":\"C\",\"Days\":8.4242249342},{\"Department\":\"Household\",\"Team\":\"A\",\"Days\":10.2680664459},{\"Department\":\"Household\",\"Team\":\"B\",\"Days\":10.7355819544},{\"Department\":\"Household\",\"Team\":\"C\",\"Days\":14.4751405746}]},{\"Date\":\"2018-01-31\",\"Job Role\":\"Junior\",\"Assignments\":[{\"Department\":\"Electronics\",\"Team\":\"A\",\"Days\":9.8390990646},{\"Department\":\"Electronics\",\"Team\":\"B\",\"Days\":7.8840336082},{\"Department\":\"Electronics\",\"Team\":\"C\",\"Days\":7.4098884623},{\"Department\":\"Household\",\"Team\":\"A\",\"Days\":6.5804561812},{\"Department\":\"Household\",\"Team\":\"B\",\"Days\":7.9109739164},{\"Department\":\"Household\",\"Team\":\"C\",\"Days\":7.6766255979}]},{\"Date\":\"2018-01-31\",\"Job Role\":\"Senior\",\"Assignments\":[{\"Department\":\"Electronics\",\"Team\":\"A\",\"Days\":5.9779944185},{\"Department\":\"Electronics\",\"Team\":\"B\",\"Days\":7.8300778676},{\"Department\":\"Electronics\",\"Team\":\"C\",\"Days\":7.9050436379},{\"Department\":\"Household\",\"Team\":\"A\",\"Days\":6.9225874658},{\"Department\":\"Household\",\"Team\":\"B\",\"Days\":7.6001780124},{\"Department\":\"Household\",\"Team\":\"C\",\"Days\":6.5897367619}]}]"

在Jupyter Notebook中重新创建尝试我似乎得到了有效的JSON:

笔记本电脑:

我假设问题出在我的
to_json()
JsonResponse
中,但我尝试将其他json尝试插入到我的
JsonResponse
中,例如以下内容,它在不转义的情况下为我提供了有效的json(但不是所需的结构):

def nested_dict():
    return collections.defaultdict(nested_dict)
result=nested_dict()

for row in df4.itertuples():
    result[row.Index[0]][row.Index[1]][row[1]][row[2]]['sales'] = row.Days

json.dumps(result)
您需要更改:

.to_json(orient='records')
致:

为了防止双重编码的json

这在以下评论中得到了更好的解释:

JsonResponse需要一个Python对象,然后对该对象进行JSON编码。您已经传入了JSON,导致JSON编码JSON


如果将
更改为_json
更改为
更改为_dict
,它是如何工作的?
JsonResponse
需要一个Python对象,然后该对象将被json编码。您已经在使用JSON了,结果是JSON编码的JSON.D'oh!谢谢你们两位!