Python 解码django应用程序发送的视图中的JSON
我有一个django应用程序,其中一个网页发布了一个JSON对象,如下所示:Python 解码django应用程序发送的视图中的JSON,python,json,django,python-3.x,Python,Json,Django,Python 3.x,我有一个django应用程序,其中一个网页发布了一个JSON对象,如下所示: var content = '{ "EnergylinxTariffMenu" : [' + '{ "FuelPage":"dual" , "DualMenu":"electric",' + ' "SupplierName":"npower", "MeterType": "",' + ' "TestLive":"test"} ]}'; document.mainform.element
var content = '{ "EnergylinxTariffMenu" : [' +
'{ "FuelPage":"dual" , "DualMenu":"electric",' +
' "SupplierName":"npower", "MeterType": "",' +
' "TestLive":"test"} ]}';
document.mainform.elements['json_content'].value = JSON.parse(content);
在我看来,我想处理这个问题:
import json
jdata = json.loads(request.POST['json_content'])
但这在以下方面是行不通的:
*** ValueError: Expecting value: line 1 column 2 (char 1)
正确的解码方法是什么
这是django 1.7与Python3.4的结合。在Javascript中调用
JSON.parse不仅毫无意义,而且破坏了测试。字段值中需要的是原始JSON字符串,即content
的直接值:如果您首先调用JSON.parse,它将转换为JS对象,而该对象的字符串值就是[object object]
——因此您的错误
实际上,您要做的是在JS中构建一个对象,并使用JSON将其转储到元素中
var content = { EnergylinxTariffMenu : [
{ "FuelPage":"dual" , "DualMenu":"electric",
"SupplierName":"npower", "MeterType": "",
"TestLive":"test"} ]};
document.mainform.elements['json_content'].value = JSON.stringify(content);
为什么首先手工构建JSON字符串,然后将其解析回实际对象?我的客户要求提供一个接受JSON输入的视图,我正在尝试编写一些东西来开发和测试它。好的,非常感谢。我想我必须调用JSON.parse才能将其转换为JSON。我现在明白了,我不必这么做。但现在在我看来,我得到的是一个字符串,而不是列表或dict。你仍然需要在Python中调用json.loads
。是的,我是,我从中得到的是一个字符串:(Pdb)type(json.loads(request.POST['json_content'])显示更新的JS代码。您现在是否正在对原始字符串调用stringify
,而不是我推荐的JS对象?