[英]json.dumps returns the objects as a string instead of a JSON object
在views.py
中: data1 = Inventory.objects.values_list('product_number','amount') data = json.dumps(list(data1), cls=DjangoJSONEncoder)
。 我将data
作为上下文传递给 html 文件。
在 HTML 文件中,使用 JS 我使用以下代码访问 JSON 对象:
{{ data|json_script:"hello-data" }}
<script type="text/javascript">
var data = JSON.parse(document.getElementById('hello-data').textContent);
document.getElementById('id_line_one').onchange = function(event){
console.log(typeof data)
alert(data);
document.getElementById('id_line_one_unit_price').value = data[this.value];
};
</script>
我希望var data
是一个字典,但它似乎是一个字符串。 Object.fromEntries
不起作用,我收到错误Uncaught TypeError: Iterator value [ is not an entry object at Function.fromEntries (<anonymous>)
。 JSON.parse
正在删除双引号,我得到[[1, 56000], [2, 55000]]
但我无法将其作为字典访问。 每当我使用索引访问它时,它都会返回单个字符作为输出,而不是将其视为 dict 对象。 如何将其转换为字典? 谢谢
问题是您正在从以下行获取列表:
data1 = list(Inventory.objects.values_list('product_number','amount'))
因此,您只是将一个列表转换为 JSON,然后解析此 JSON,从而生成一个列表。
尝试改用以下内容:
from django.core.serializers.json import DjangoJSONEncoder
from django.core import serializers
data_obj_model = Inventory.objects.all()
data1=serializers.serialize('json', data_obj_model, cls=DjangoJSONEncoder)
然后,您可以在 JavaScript 代码中使用data["fields"].field_of_interest
访问模型的所有字段。
或者您也可以使用您感兴趣的两个字段创建一个自定义字典,如下所示:
data1 = dict(Inventory.objects.values_list('product_number','amount'))
这可以在解析后用作 JavaScript 中的字典。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.