Seite 1 von 1

Verschachteltes JSON-Objekt (Django)

Verfasst: Freitag 13. November 2020, 20:37
von Foxifox
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

Re: Verschachteltes JSON-Objekt (Django)

Verfasst: Freitag 13. November 2020, 21:57
von sparrow
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:

Code: Alles auswählen

foods = response.json()
for food in foods:
    ....
Und schon wird klarer, dass man _in_ der Schleife nicht via foods.content.name zugreift sonder vie food.content.name...

Re: Verschachteltes JSON-Objekt (Django)

Verfasst: Samstag 14. November 2020, 07:02
von sparrow
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.

Re: Verschachteltes JSON-Objekt (Django)

Verfasst: Samstag 14. November 2020, 12:16
von Foxifox
Perfekt! Vielen Dank sparrow.

Dank Deiner Hinweise konnte ich das Problem lösen.