[英]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.