Hallo zusammen,
ich bin absoluter Neuling in der Programmierung und in Django und habe sicherlich eine banale Frage...
Ich möchte ein verschachteltes Json-Objekt abfragen und den Inhalt anzeigen lassen.
Ich habe schon alle mögliche Varianten versucht.
Folgend ein Auszug von dem verschachtelten Json-Objekt. ×××××
[
{
"sn": 212342,
"description": "100 GRAND Mar",
"Code": "122345";
"content": [
{
"number": "203",
"name": "Protein",
"amount": 2.50,
},
{
"number": "102",
"name": "liqid",
"amount": 3.11,
},
{
"number": "522",
"name": "Sodium",
"amount": 3.11,
}
]
},
{
"sn": 773664,
"description": "323 Beverage",
"Code": "123445";
"content": [
{
"number": "321",
"name": "Selenium",
"amount": 4.50,
},
{
"number": "102",
"name": "Carbo",
"amount": 3.133,
},
{
"number": "444",
"name": "Sodium",
"amount": 3.11,
}
]
}
]
Danach geht es so in dieser Form weiter...
Meiner Frage ist, wie komme ich zu den Inhalte von "content"?
Mit dem Punktoperator funktioniert es nicht.
Bsp.: data.content.name
Meine View:
import requests
from django.shortcuts import render
def home(request):
response = requests.get('https://api.nal.usda.gov/fdc/v1/foods/l ... =xxxxxxxxx')
data = response.json()
return render(request, "main_app/home.html", {"data": data })
Auszug home.html:
{% for obj in data %}
<li class="list-group-item">{{ data.content.name }} </li>
{% endfor %}
Vielen Dank schon mal für die Unterstützung.
Viele Grüße
Andi
Verschachteltes JSON-Objekt (Django)
Das liegt nicht an dem .-Operator.
Versuch es doch erst einmal ohne den Template-Kram.
Was ist "data" für ein Typ von Objekt?
"obj" ist ein schelchter Name. Alles ist ein Objekt. Verwende sprechende Namen - das hilft dir beim Veständnis.
Was sind das für Elemente in "data"? Sind das Getränke? Lebensmittel? Benenne die Variabe nach dem, was sie ist. Also ohne Template direkt im Code würde das so aussehen:
Und schon wird klarer, dass man _in_ der Schleife nicht via foods.content.name zugreift sonder vie food.content.name...
Versuch es doch erst einmal ohne den Template-Kram.
Was ist "data" für ein Typ von Objekt?
"obj" ist ein schelchter Name. Alles ist ein Objekt. Verwende sprechende Namen - das hilft dir beim Veständnis.
Was sind das für Elemente in "data"? Sind das Getränke? Lebensmittel? Benenne die Variabe nach dem, was sie ist. Also ohne Template direkt im Code würde das so aussehen:
Code: Alles auswählen
foods = response.json()
for food in foods:
....Oh, ich war gestern etwas müde und habe mir die Grunddaten nicht genau angesehen. Mein vorheriger Beitrag stimmt - und zusätzlich:
content ist eine Liste. Hier musst du wieder mit einer fory-Schleife über die Elemente iterieten.
content ist eine Liste. Hier musst du wieder mit einer fory-Schleife über die Elemente iterieten.
