Saya telah JSON ini di file:
{
"maps": [
{
"id": "blabla",
"iscategorical": "0"
},
{
"id": "blabla",
"iscategorical": "0"
}
],
"masks": [
"id": "valore"
],
"om_points": "value",
"parameters": [
"id": "valore"
]
}
Saya menulis ini script untuk mencetak semua data JSON:
import json
from pprint import pprint
with open('data.json') as f:
data = json.load(f)
pprint(data)
Program ini menimbulkan pengecualian, meskipun:
Traceback (most recent call last):
File "<pyshell#1>", line 5, in <module>
data = json.load(f)
File "/usr/lib/python3.5/json/__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.5/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.5/json/decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 13 column 13 (char 213)
Bagaimana saya bisa mem-parse JSON dan mengekstrak nilai-nilai?
Data anda tidak valid JSON format. Anda memiliki []
ketika anda harus memiliki {}
:
[]
adalah untuk JSON array, yang disebut daftar
di Python{}
adalah untuk objek JSON, yang disebut dict
di PythonBerikut ini's bagaimana anda JSON file yang akan terlihat:
{
"maps": [
{
"id": "blabla",
"iscategorical": "0"
},
{
"id": "blabla",
"iscategorical": "0"
}
],
"masks": {
"id": "valore"
},
"om_points": "value",
"parameters": {
"id": "valore"
}
}
Kemudian anda dapat menggunakan kode:
import json
from pprint import pprint
with open('data.json') as f:
data = json.load(f)
pprint(data)
Dengan data ini, anda sekarang dapat juga menemukan nilai-nilai seperti:
data["maps"][0]["id"]
data["masks"]["id"]
data["om_points"]
Cobalah mereka keluar dan melihat apakah itu masuk akal.
Anda data.json
harus terlihat seperti ini:
{
"maps":[
{"id":"blabla","iscategorical":"0"},
{"id":"blabla","iscategorical":"0"}
],
"masks":
{"id":"valore"},
"om_points":"value",
"parameters":
{"id":"valore"}
}
Kode anda harus:
import json
from pprint import pprint
with open('data.json') as data_file:
data = json.load(data_file)
pprint(data)
Catatan bahwa ini hanya bekerja di Python 2.6 dan up, karena hal ini tergantung pada dengan
-pernyataan. Di Python 2.5 menggunakan dari __masa__ impor with_statement
, di Python <= 2.4, lihat Justin Kupas's jawaban, yang jawaban ini didasarkan pada.
Anda sekarang dapat juga mengakses nilai-nilai tunggal seperti ini:
data["maps"][0]["id"] # will return 'blabla'
data["masks"]["id"] # will return 'valore'
data["om_points"] # will return 'value'
Justin Kupas's jawaban ini benar-benar bermanfaat, tapi jika anda menggunakan Python 3 membaca JSON harus dilakukan seperti ini:
with open('data.json', encoding='utf-8') as data_file:
data = json.loads(data_file.read())
Catatan: gunakan json.beban
bukan json.beban
. Di Python 3, json.beban
mengambil sebuah parameter string. json.beban
mengambil file-objek seperti parameter. data_file.read()
mengembalikan sebuah objek string.
Jujur, saya don't pikir itu's masalah untuk memuat semua data json ke memori kebanyakan kasus.
"Ultra JSON" atau hanya "ujson" dapat menangani memiliki []
pada anda JSON file input. Jika anda're membaca JSON file input ke dalam program anda sebagai daftar JSON unsur-unsur; seperti, [{[{}]}, {}, [], dll...]
ujson dapat menangani setiap sewenang-wenang urutan daftar kamus kamus dari daftar.
Anda dapat menemukan ujson di Python paket index dan API hampir identik dengan Python's built-in json
perpustakaan.
ujson ini juga jauh lebih cepat jika anda're loading yang lebih besar file JSON. Anda dapat melihat rincian kinerja dibandingkan dengan lainnya Python JSON perpustakaan di link yang sama yang disediakan.
Jika anda're menggunakan Python3, anda dapat mencoba mengubah (koneksi.json
file) JSON untuk:
{
"connection1": {
"DSN": "con1",
"UID": "abc",
"PWD": "1234",
"connection_string_python":"test1"
}
,
"connection2": {
"DSN": "con2",
"UID": "def",
"PWD": "1234"
}
}
Kemudian dengan menggunakan kode berikut:
connection_file = open('connection.json', 'r')
conn_string = json.load(connection_file)
conn_string['connection1']['connection_string_python'])
connection_file.close()
>>> test1
Di sini anda pergi dengan modifikasi data.json` file:
{
"maps": [
{
"id": "blabla",
"iscategorical": "0"
},
{
"id": "blabla",
"iscategorical": "0"
}
],
"masks": [{
"id": "valore"
}],
"om_points": "value",
"parameters": [{
"id": "valore"
}]
}
Anda dapat memanggil atau mencetak data pada console dengan menggunakan di bawah garis:
import json
from pprint import pprint
with open('data.json') as data_file:
data_item = json.load(data_file)
pprint(data_item)
Output yang diharapkan untuk cetak(data_item['parameter'][0]['id'])
:
{'maps': [{'id': 'blabla', 'iscategorical': '0'},
{'id': 'blabla', 'iscategorical': '0'}],
'masks': [{'id': 'valore'}],
'om_points': 'value',
'parameters': [{'id': 'valore'}]}
Output yang diharapkan untuk cetak(data_item['parameter'][0]['id'])
:
valore
Ada dua jenis dalam parsing ini.
Dari sebuah file, anda dapat menggunakan berikut:
import json
json = json.loads(open('/path/to/file.json').read())
value = json['key']
print json['value']
Ini arcticle menjelaskan full parsing dan mendapatkan nilai dengan menggunakan dua skenario.Parsing JSON menggunakan Python
Sebagai python3 pengguna,
Perbedaan antara beban
dan beban
metode ini penting terutama ketika anda membaca json data dari file.
Seperti yang tercantum dalam dokumen:
json.beban:
Deserialize fp (a .read()-mendukung file teks atau biner file yang berisi dokumen JSON) ke sebuah objek Python menggunakan ini tabel konversi.
json.beban:
json.beban: Deserialize s (a str, byte atau bytearray contoh yang berisi dokumen JSON) ke sebuah objek Python menggunakan konversi ini meja.
json.metode beban dapat langsung membaca membuka dokumen json karena ia mampu membaca file biner.
with open('./recipes.json') as data:
all_recipes = json.load(data)
Sebagai hasilnya, anda json data tersedia dalam format yang ditentukan menurut tabel konversi:
https://docs.python.org/3.7/library/json.html#json-to-py-table