Jump to content
Che

Ajutor: Cum preiei un string json in python ?

Recommended Posts

Posted

Salut !

 

1. Am un browser in pycurl care acceseaza un url iar raspunsul este in format json. Cum se procedeaza in acest caz ca nu ma pricep. La html faci results.getvalue si asa mai departe. Care ar fi diferentele la json ? Cum ar trebui sa-l accesez ?

In al doilea rand, cel mai important, rezultatul de tip json este ceva de genul:

{
    "mainPrincipalAnimals": [{
        "tip": "Catel",
        "numar": 37,
        "subtip": "Gelu Ionescu",
        "regiune": "Muntii Carpati",
        "id": 0,
        "grupName": null,
        "miscareId": 8,
        "miscareRegionala": 32,
        "miscareRegionalaCod": null,
        "miscareRegionalaNume": "Romania",
        "cod": "pu123",
        "anotherName": "Javre",
        "numeroA": 2.453453465,
        "numeroB": 9,
        "NumeroC": 787.0,
        "numeroD": 0.0,
        "numeroE": 33.534534,
        "numeroF": 65.54532,
        "others": 22.8633,
        "criteria_perfection": 454.52345345563
    }, {
        "tip": "Catel",
        "numar": 37,
        "subtip": "Gelu Ionescu",
        "regiune": "Muntii Carpati",
        "id": 0,
        "grupName": null,
        "miscareId": 8,
        "miscareRegionala": 32,
        "miscareRegionalaCod": null,
        "miscareRegionalaNume": "Romania",
        "cod": "pu123",
        "anotherName": "Javre",
        "numeroA": 2.453453465,
        "numeroB": 9,
        "NumeroC": 787.0,
        "numeroD": 0.0,
        "numeroE": 33.534534,
        "numeroF": 65.54532,
        "others": 22.8633,
        "criteria_perfection": 454.52345345563
    },
    "paging": {
        "currentPage": 1,
        "totalPages": 5,
        "resultsPerPage": 20,
        "totalResults": 98,
        "firstRecordIndex": 1,
        "lastRecordIndex": 20
    },
    "statColumns": ["coadaScurtaMaro", "coadaScurtaRosie", "coadaScurtaGalbena", "turbare", "micareFaina", "avioaneRomanesti"]
}

Asta de mai sus fiind facut asa cu js beautifier http://jsbeautifier.org/  ca tu il primesti de fapt asa pe tot gramada, cu acolade, cu tot, fara spatii, fara nimic de nici nu se intelege (adica e comprimat).

2. Cum fac ca sa parsez cat mai simplu si mai frumos chestia de mai sus si apoi sa bag totul intr-o baza de date, de exemplu "catel" la coloana "tip", "37" la coloana "numar", "Muntii Carpati" la coloana "regiune" si asa mai departe, prima valoare fiind coloana si a doua e ce trebuie scris in coloana ?

3. Dar daca as vrea, de exemplu sa bag, "paging" intr-o baza de date, cum as putea face asta ?

 

Multumesc mult de tot !

 

  • Active Members
Posted (edited)
>>> import json
>>> a='{"test":"1","tes2":2}'
>>> parsed=json.loads(a)
>>> for p in parsed:
...     print p
...     print parsed[p]
...
test
1
tes2
2
>>>

Edited by dancezar
  • Upvote 1
Posted (edited)

Dupa ce ai preluat raspunsul si ai retinut datele json intr-o variabila, ai 2 cazuri:

- fie citesti si interpretezi automat ca json outputul si ai un json object intr-o variabila json_value

- fie ai un string ca output si faci json_value = json.loads(output_text)

 

Dupa ce ai variabila respectiva poti accesa valori de la chei in mai multe feluri:

1. main_principal_animals = json_value["mainPrincipalAnimals"] (poti sa verifici daca o cheie 'alpha' exista in dictionar cu < if 'alpha' in json_value: >)

2. main_principal_animals = json_value.get('mainPrincipalAnimals', 'Pisi') <- in cazul in care cheia 'mainPrincipalAnimals' nu exista, variabila va retine stringul "Pisi"

 

Ca sa iti raspund la intrebarile tale acum:

1. dictionary = json.loads(results.getvalue())

2. cum am zis mai sus un pic

3. depinde de baza de date pe care o folosesti dar daca folosesti baza de date nosql cu documente, ar fi de ajuns sa inserezi jsonul tau cu informatiile dorite.

Edited by Tuckle
  • Upvote 2

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...