Pertanyaan Mem-parsing nilai dari file JSON?


Saya memiliki JSON ini dalam file:

{
    "maps": [
        {
            "id": "blabla",
            "iscategorical": "0"
        },
        {
            "id": "blabla",
            "iscategorical": "0"
        }
    ],
    "masks": [
        "id": "valore"
    ],
    "om_points": "value",
    "parameters": [
        "id": "valore"
    ]
}

Saya menulis skrip ini yang mencetak semua teks json:

json_data=open(file_directory).read()

data = json.loads(json_data)
pprint(data)

Bagaimana saya bisa menguraikan file dan mengekstrak nilai tunggal?


1101
2018-05-14 15:54


asal


Jawaban:


Saya pikir apa yang Ignacio katakan adalah file JSON Anda salah. Kamu punya [] kapan kamu seharusnya {}. [] untuk daftar, {} adalah untuk kamus.

Beginilah tampilan file JSON Anda, file JSON Anda bahkan tidak akan dimuat untuk saya:

{
    "maps": [
        {
            "id": "blabla",
            "iscategorical": "0"
        },
        {
            "id": "blabla",
            "iscategorical": "0"
        }
    ],
    "masks": {
        "id": "valore"
    },
    "om_points": "value",
    "parameters": {
        "id": "valore"
    }
}

Kemudian Anda dapat menggunakan kode Anda:

import json
from pprint import pprint

with open('data.json') as f:
    data = json.load(f)

pprint(data)

Dengan data, Anda sekarang dapat juga menemukan nilai-nilai seperti:

data["maps"][0]["id"]
data["masks"]["id"]
data["om_points"]

Coba mereka keluar dan lihat apakah itu mulai masuk akal.


1653
2018-05-14 16:10



Anda data.json seharusnya 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)

Perhatikan bahwa ini hanya bekerja dengan Python 2.6 ke atas, karena ini tergantung pada with-pernyataan. Dalam penggunaan Python 2.5 from __future__ import with_statement, dengan Python <= 2.4, lihat Jawaban Justin Peel, yang didasarkan pada jawaban ini.

Anda sekarang dapat mengakses nilai tunggal seperti ini:

data["maps"][0]["id"]  # will return 'blabla'
data["masks"]["id"]    # will return 'valore'
data["om_points"]      # will return 'value'

268
2017-11-29 20:10



Jawaban @Justin Peel sangat membantu, tetapi 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.loads dari pada json.load. Dengan Python 3, json.loads mengambil parameter string. json.load mengambil parameter objek seperti file. data_file.read() mengembalikan objek string.


60
2018-05-22 03:44



data = []
with codecs.open('d:\output.txt','rU','utf-8') as f:
    for line in f:
       data.append(json.loads(line))

47
2018-05-12 20:47



"Ultra JSON" atau hanya "ujson" yang bisa ditangani [] dalam masukan file JSON Anda. Jika Anda membaca file masukan JSON ke dalam program Anda sebagai daftar elemen JSON; seperti, [{[{}]}, {}, [], etc...] ujson dapat menangani urutan daftar kamus, kamus daftar yang acak.

Anda dapat menemukan ujson di Indeks paket Python dan API hampir identik dengan built-in Python json Perpustakaan.

ujson juga jauh lebih cepat jika Anda memuat file JSON yang lebih besar. Anda dapat melihat detail kinerja dibandingkan dengan pustaka Python JSON lainnya di tautan yang sama.


11
2018-03-09 21:38



jika Anda berada di python 3 di sini adalah bagaimana Anda dapat melakukannya

{
  "connection1": {
    "DSN": "con1",
    "UID": "abc",
    "PWD": "1234",
    "connection_string_python":"test1"
  }
  ,
  "connection2": {
    "DSN": "con2",
    "UID": "def",
    "PWD": "1234"
  }
}

Kode harus seperti mengasumsikan file connection.json terlihat seperti di atas

connection_file = open('connection.json', 'r')
conn_string = json.load(connection_file)
conn_string['connection1']['connection_string_python'])
connection_file.close()
>>>test1

6
2018-04-25 17:42



   # Here you go with modified json file:
   # data.json file : 
    {
        "maps": [
            {
                "id": "blabla",
                "iscategorical": "0"
            },
            {
                "id": "blabla",
                "iscategorical": "0"
            }
        ],
        "masks": [{
            "id": "valore"
        }],
        "om_points": "value",
        "parameters": [{
            "id": "valore"
        }]
    }


   # You can call or print data on console by using below lines

    import json
    from pprint import pprint
    with open('data.json') as data_file:
        data_item = json.load(data_file)
    pprint(data_item)

    print(data_item['parameters'][0]['id'])

    #Output : 
    #pprint(data_item) output as :

    {'maps': [{'id': 'blabla', 'iscategorical': '0'},
              {'id': 'blabla', 'iscategorical': '0'}],
     'masks': [{'id': 'valore'}],
     'om_points': 'value',
     'parameters': [{'id': 'valore'}]}
    #print(data_item['parameters'][0]['id']) output as :
    valore

4
2017-11-07 01:53