-
Notifications
You must be signed in to change notification settings - Fork 84
JSON
JSON (JavaScript Object Notation) - yra atviro standarto duomenų perdavimo ir saugojimo formatas. Su JSON nuolat susidursime traukdami duomenis iš įvairių API, jis taip pat naudojamas įvairiems programų nustatymams saugoti, ar tiesiog kažkokiems duomenims. Panagrinėkime pavyzdį iš wikipedia'os:
{
"firstName": "John",
"lastName": "Smith",
"isAlive": true,
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021-3100"
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "office",
"number": "646 555-4567"
}
],
"children": [],
"spouse": null
}
Kaip matome, formatas labai primena Python žodynus. Jį sudaro objektai su atributo - reikšmės poromis (key - value pairs) ir masyvai. JSON, kaip standartas, paplito dėl lengvo skaitomumo. Lentelėje matyti, kaip vadinasi Python objektų ekvivalentai JSON formate.
Python | JSON |
---|---|
dict | Object |
list | Array |
tuple | Array |
str | String |
int | Number |
float | Number |
True | true |
False | false |
None | null |
Python'e galima atlikti įvairias manipuliacijas su JSON objektais. Norint pradėti, reikia importuoti biblioteką:
import json
pirmas dalykas, ką galime padaryti tai susikurti string tipo kintamąjį ir perkelti į jį JSON duomenis.
data = '''{
"student": [
{
"id":"01",
"name": "Tom",
"lastname": "Price"
},
{
"id":"02",
"name": "Nick",
"lastname": "Thameson"
}
]
}'''
data_dict = json.loads(data)
print(data_dict)
print(type(data_dict))
JSON šiuo atveju buvo iš 'str' paverstas "gimtuoju" Python'o žodynu, pasitelkiant .loads metodą. dabar galime atlikti įvairias manipuliacijas. pvz.:
data_dict['student'][1]['name'] = 'Kyle'
for student in data_dict['student']:
student.update({'gender':'male'})
print(data_dict)
# {'student': [{'id': '01', 'name': 'Tom', 'lastname': 'Price', 'gender': 'male'},
# {'id': '02', 'name': 'Kyle', 'lastname': 'Thameson', 'gender': 'male'}]}
ir pan.
Dabar galime mūsų žodyną vėl perkelti į JSON formatą:
new_json = json.dumps(data_dict, indent=2)
print(new_json)
# {
# "student": [
# {
# "id": "01",
# "name": "Tom",
# "lastname": "Price",
# "gender": "male"
# },
# {
# "id": "02",
# "name": "Kyle",
# "lastname": "Thameson",
# "gender": "male"
# }
# ]
# }
indent=2 reiškia, kad norėsime rezultato gražiai atspausdinto, su dviejų tarpų indentacija.
norėdami užkrauti JSON objektą iš failo, darome taip:
with open('example.json', 'r') as file:
data = json.load(file)
print(data)
# [{'id': '0001', 'type': 'donut', 'name': 'Cake', 'ppu': 0.55, 'batters': {'batter': [{'id': '1001', 'type': 'Regular'}, {'id': '1002', 'type': 'Chocolate'}, {'id': '1003', 'type': 'Blueberry'}, {'id': '1004', 'type': "Devil's Food"}]}, 'topping': [{'id': '5001', 'type': 'None'}, {'id': '5002', 'type': 'Glazed'}, {'id': '5005', 'type': 'Sugar'}, {'id': '5007', 'type': 'Powdered Sugar'}, {'id': '5006', 'type': 'Chocolate with Sprinkles'}, {'id': '5003', 'type': 'Chocolate'}, {'id': '5004', 'type': 'Maple'}]}, {'id': '0002', 'type': 'donut', 'name': 'Raised', 'ppu': 0.55, 'batters': {'batter': [{'id': '1001', 'type': 'Regular'}]}, 'topping': [{'id': '5001', 'type': 'None'}, {'id': '5002', 'type': 'Glazed'}, {'id': '5005', 'type': 'Sugar'}, {'id': '5003', 'type': 'Chocolate'}, {'id': '5004', 'type': 'Maple'}]}, {'id': '0003', 'type': 'donut', 'name': 'Old Fashioned', 'ppu': 0.55, 'batters': {'batter': [{'id': '1001', 'type': 'Regular'}, {'id': '1002', 'type': 'Chocolate'}]}, 'topping': [{'id': '5001', 'type': 'None'}, {'id': '5002', 'type': 'Glazed'}, {'id': '5003', 'type': 'Chocolate'}, {'id': '5004', 'type': 'Maple'}]}]
.dump() leidžia įrašyti python žodyną į failą:
with open('example2.json', 'w') as file:
json.dump(data, file, indent=2, sort_keys=True)
sort_keys išrūšiuoja atributus (keys) pagal abėcelę
© Donatas Noreika ir Jotautas Treigys
Dekoratoriai
Iteratoriai ir generatoriai
RegEx
Pillow
NumPy
Pandas
- Pandas I
- Užduotys I
- Atsakymai I
- Pandas II
- Užduotys II
- Atsakymai II
- Pandas III
- Užduotys III
- Atsakymai III
Seaborn
Mašininis mokymasis
- 1 Tiesinės regresijos modelis
- 1 Užduotis
- 1 Atsakymas
- 2 Modeliai - klasifikatoriai
- 2 Užduotis
- 2 Atsakymas
- 3 Modeliai praktikoje
- 3 Užduotis (atnaujinta), atsakymas
- 3 Užduotis
- 3 Atsakymas (kodas su komentarais)
Requests, JSON, API
Web Scraping (Beautiful Soup)
Duomenų bazės
- SQL 1
- Užduotys
- Atsakymai
- SQL 2
- Užduotys
- Atsakymai
- SQL 3
- Užduotys
- Atsakymai
- SQL 4
- Užduotis
- SQL per Python
- Užduotis
- ORM 1
- Užduotys
- ORM 2
- Užduotis
- Atsakymas
Flask
- Įžanga
- Užduotys
- I dalis
- Užduotis
- I dalies kodas (atsakymas)
- II dalis
- Užduotis
- Atsakymas (kodas)
- III dalis
- Užduotis
- Atsakymas
- IV dalis
- Užduotis
- Atsakymas
- Flask Many2one, CRUD
- Flask One2many, many2many CRUD
- Flask: REST API kūrimas
- Flask: API su One2many (kodas)
- Flask: vartotojai
- Flask: nuotraukos pridėjimas, admin puslapis, puslapiavimas
- Flask: password reset, error pages
- Flask: projekto sutvarkymas
- Flask diegimas į serverį
Django
- 1. Įžanga, Modeliai
- 2. Administratoriaus svetainė
- 3. Šablonai
- 4. Views
- 5. Puslapiavimas, Paieška, Nuotraukos
- 6. Autorizacija
- 7. Vartotojai II, HTML laukai
- 8. Registracija, Formos
- 9. Vartotojo profilis
- 10. Create, Update, Delete rodinių klasės
- 11. Vertimai
- Užduotis: Autoservisas
- Biblioteka: kodas iki 6-tos dalies
- Biblioteka: kodas nuo 6-tos dalies
- Django diegimas į serverį
- Django diegimas į serverį 2
Django REST
Odoo
- Kurso programa: projektų valdymas
- 1 pamoka
- 2 pamoka
- 3 pamoka
- 4 pamoka
- 5 pamoka
- 6 pamoka
- 7 pamoka
- 8 pamoka
- 9 pamoka
Linux