Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Python: JSON-datan käsittely silmukassa

Multibyte [15.11.2017 16:11:04]

#

Moi

Haen rajapinnalta JSONia, jonka luen json.loads funktiolla sisään koodiin ja joka pitäisi nyt saada silmukoitua läpi.

En kuitenkaan saa mitään tolkkua tuohon esim. for-silmukoiden avulla.
Onko tuo nyt siis aivan väärä tapa käsitellä JSONia ja lähestyä ao. ongelmaa?

Seuraavanlaista JSONia ladataan ja sitä tulisi kommenttien mukaisesti muokata (lyhyesti: vaihtaa jokaisen ID avaimen arvo):

{
  "name": "Model",
  "panels": [ // Sisältää useita ao. kaltaisi lapsielementtejä
    {
      "account": "secret",
      "data": {
        "hasDetailsView": false,
        "filters": [
          {
            "type": "include",
            "id": "2522" // Jokaisen lapsielementin ID:n arvo pitäisi muuttaa
          }
        ],
        "accountName": "secret"
      }
   },

Multibyte [16.11.2017 08:28:19]

#

Etiäpäin taaksepäin etiäpäin - selvisihän se, kun kykeni vain keskittymään.

for panels in model['panels']:
  if panels['data']['filters']:
    panels['data']['filters'][0]['id'] = 'MY FOKIN FILTER'

The Alchemist [17.11.2017 13:27:33]

#

Tosin tuo koodisi on väärin, koska panels on lista useasta alkiosta eikä yksittäinen tietue...

Metabolix [17.11.2017 16:19:15]

#

The Alchemist kirjoitti:

Tosin tuo koodisi on väärin, koska panels on lista useasta alkiosta eikä yksittäinen tietue...

For-silmukka käy listan alkiot läpi, jolloin panels-muuttuja sisältää vain yhden alkion. Koodi on siis siltä osin oikein. Tietysti voi saivarrella, että muuttujan nimen pitäisi olla yksikössä panel.

Itse ihmettelen sitä, että muutetaan vain filters-taulukon ensimmäistä kohtaa. Onko varmasti juuri siinä muutettava arvo, vai pitäisikö käydä läpi koko filters-taulukko ja muuttaa kaikki tai tietyn tyyppiset?

The Alchemist [17.11.2017 19:52:37]

#

Niin no, taisin hämääntyä siitä, kun en tiedostanut for-silmukan olemassaoloa ja muuttujan nimi oli monikossa. Työaikaan ei ole ihan välkyimmillään. :oops:

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta