Проблема при разборе строки JSON
Я сбрасываю JSON в Django view, а затем разбираю JSON в JS для получения данных.
Мой view.py (Django)
ibms = []
for i in range(2, 5):
ibm = Mapa(i, wsMapa)
ibms.append(ibm.__dict__)
ibms = json.dumps(ibms)
return render(request, 'mapas/index.html', {'ibms': ibms})
Вывод переменной ibm в шаблоне Django имеет вид:
[{"numeroIbm": "AUTO P"}, {"numeroIbm": "PTB"}, {"numeroIbm": "FAROL"}]
Мой index.html (JS внутри)
{{ ibms|json_script:"ibms" }}
<script>
const mydata = JSON.parse(document.getElementById("ibms").textContent);
const mydata2 = JSON.parse(mydata);
</script>
Проблема в следующем: Мне приходится дважды JSON.parse, чтобы получить JS объект. Переменная mydata, несмотря на JSON.parse, является string typeof. Я получаю конечный результат только тогда, когда JSON.parse во второй раз (mydata2).
Что происходит, пожалуйста?
Заранее спасибо!
Вы не должны сбрасывать его в представление, поэтому:
ibms = [Mapa(i, wsMapa).__dict__ for i in range(2, 5)]
return render(request, 'mapas/index.html', {'ibms': ibms})
и, таким образом, разбираем его как:
{{ ibms|json_script:"ibms" }}
<script>
const mydata = JSON.parse(document.getElementById("ibms").textContent);
// no second parse
</script>