Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste V3
Login / opret bruger

Forum \ Programmering og webdesign \ Programmering
Denne tråd er over 6 måneder gammel

Er du sikker på, at du har noget relevant at tilføje?

Python og JSON lists

Af Guru Colaplus | 07-01-2019 16:10 | 1661 visninger | 7 svar, hop til seneste
Hej, Jeg er ved at lave et script i Python. Jeg har en json fil, hvori jeg for hver 'position', så at sige, gerne vil hente det felt der hedder "datavalue" fra hver 'position'. Eksempel på strukturen i JSON-listen ser således ud: [ { #position1 "datafield1_1": "datavalue1_1", "datafield1_2": "datavalue1_2" }, {#position2 "datafield2_1": "datavalue2_1", "datafield2_2": "datavalue2_2" } ] Jeg bruger følgende (udtræk af) kode til behandling af JSON: c = open("c.json").read() data = json.loads(c) print(type(data)) print(data[2]) Kodenstumpen ovenfor giver mig hele 'position2', men hvordan skal jeg forholde mig, hvis jeg så gerne vil have fat i f.eks. "datafield2_2" i 'position2'? Jeg har fint styr på hvordan det gøres i et dictionary, der kalder jeg jo bare værdien på den nøgle jeg skal bruge, men synes slet ikke jeg kan få det til at fungere sådan med listen. Håber mit spørgsmål giver mening, ellers så tøv ikke med at spørge. På forhånd, tak. Mvh. Frederik
--
MSI Gaming 5 Z97 | Xeon E3-1230 v3 | 12GB DDR3 1600MHz | GTX 1060 3GB
#1
Tux
Guru
07-01-2019 16:11

Rapporter til Admin
data[2][datafield2_2] Med mindre det er et object. Så data[2]->datafield2_2. Erstat -> med hvad end Python bruger som object separator. Er nok bare . (dot).
--
Don't feed the trolls.
--
Sidst redigeret 07-01-2019 16:16
#2
gborella
Gigabruger
07-01-2019 16:17

Rapporter til Admin
import json parsed_json = json.loads(json_string) brug som objekt. https://docs.python-guide.org[...]
--
#3
Colaplus
Guru
07-01-2019 17:06

Rapporter til Admin
#1 Tak, men jeg har prøvet alle mulige konfigurationer jeg kan komme i tanke om nu, uden held. Jeg får: NameError: name 'datafield2_2' is not defined ved "data[2][datafield2_2]" Og AttributeError: 'dict' object has no attribute 'datafield2_2' ved at have punktum imellem. Og det er ganske rigtigt . [punktum] som bruges som objektseperator i python :) #2 Tak, det leder mig dog ikke langt, da problemet ligger i det er en JSON liste, og ikke et dictionary, medmindre jeg misforstår hvad du skriver/hentyder til via linket. Jeg har en JSON liste udledt af en database med ca 3500 linjer, så jeg ser gerne at jeg blot kan åbne med JSON i python.
--
MSI Gaming 5 Z97 | Xeon E3-1230 v3 | 12GB DDR3 1600MHz | GTX 1060 3GB
--
Sidst redigeret 07-01-2019 17:10
#4
gborella
Gigabruger
07-01-2019 21:45

Rapporter til Admin
det kan være jeg tager helt fejl, men jeg mindet ikke syntaxen tillader at lave et JSON objekt kun indeholdende en liste? i så fald ville den skulle kaldes af "noget" - ellers er det vel ikke en key:value repræsentation? en json som denne: (jeg har forresten gjort elementerne i arrayen ens - ellers kan det blive noget rigtigt hø for dig) { "what": [{ "datafield": "datavalue1_1", "datafield2": "datavalue1_2" }, { "datafield": "datavalue2_1", "datafield2": "datavalue2_2" }] } giver dig et fint objekt du kan iterere over med noget ala for p in parsed['what']: print(p['datafield'])
--
#5
vaff
Monsterbruger
08-01-2019 09:26

Rapporter til Admin
#4 det ligner valid json, der er ikke noget problem der. #0 Så du vil have ?datafield2_2 for alle eller for et enkelt object?
--
#6
BingoOnAmmo
Bruger
08-01-2019 12:09

Rapporter til Admin
Altså, vi er vel enige om at array starter på 0 her? Så du har kun 2 objekter. data[0] data[1] Mvh Kasper
--
Sidst redigeret 08-01-2019 12:10
#7
nuxx
Guru
08-01-2019 12:41

Rapporter til Admin
Jeg forstår virkeligt heller ikke udfordringen her... Måske #6 er inde på det rigtige hvis du sidder og prøver at få fat i [2] i et 0-based index med 2 entries :P I javascript ville du jo decideret bare skrive var output = data[1].datafield2_2; i dette specifikke tilfælde. Jeg forstår som #4 heller ikke hvorfor du har unikke keys på under-elementerne, det er redundant og i alle logiske tilfælde virkeligt noget rod at arbejde med.
--
Play: i7-9700K, Z390i Strix, GTX1070 Gaming X, 16GB@3ghz, Louqe Ghost S1, 1TB 970EVO, SF600, 34" AW3418DW 3440x1440@120Hz Work: 15.4" MBP Retina 2017

Opret svar til indlægget: Python og JSON lists

Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.

Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.

Opret bruger | Login
NYHEDSBREV
Afstemning


ANNONCE