0
votes

Comment lire les données de dossier JSON à l'aide de Python?

Je veux obtenir les données des dossiers JSON à l'aide de Python 3.7.2.

Ceci est mon fichier JSON: p> xxx pré>

pour mon projet, j'ai besoin de variables suivantes: p>

  • variable de tous les périphériques recueillis dans une liste: p>

    jstatus = getStatus(json_data, "device1")    | Output: 0 
    
  • État des périphériques enregistrés dans différentes variables: P>

    jdevices = getDevices(json_data)             | Output: {'device1', 'device2', 'device3'}
    


3 commentaires

Qu'est-ce que vous avez essayé?


Vous ne devriez pas vouloir noms variables qui sont lus des données, comme JSON. Si votre code ne traitera que de ces 3 dévieces et que vous le savez à l'avance, c'est bon. Sinon, vous devriez avoir un dictionnaire avec les périphériques d'état et une clé pour chaque périphérique dans ce dictionnaire.


Quel est le problème, exactement? Avez-vous essayé quelque chose, effectué des recherches? Je suis d'accord avec @jsbueno, cela sonne un peu comme un cas de XY Problème .


3 Réponses :


0
votes

Vous pouvez le faire dans Pandas

devices = df['name'].tolist()
status = df['status'].tolist()


0 commentaires

1
votes

Python a une prise en charge intégrée des fichiers JSON, et il a également une structure de données très pratique nommée Dictionnaire qui fonctionne brillamment avec JSON.

Vous devez essentiellement le faire:

  • Dites à Python Comment interagir avec les fichiers JSON: Importer JSON
  • chargez vos données: data = jason.loads ("path_to_file")
  • Faites ce que vous voudriez avec les données, par exemple itérer sur celui-ci:

    pour x dans les données: Imprimer (f "x: {x}, données [x]: {data [x]}")


0 commentaires

2
votes
import json

class DeviceHelper:

    def __init__(self, json_file):
        """open json file and load json content"""
        with open(json_file, 'rb') as file:
            self.device_info = json.load(file)

    def get_device_status(self, name):
        """loop over the divices list and compare"""
        for device in self.device_info.get('device'):
            if device.get('name') == name:
                return device.get('status')
        return 'Lol no device found'

    def get_devices(self):
        return [device.get('name') for device in self.device_info.get('device')]

# path to json file
device_info = DeviceHelper('devices.json')

device_info.get_device_status('device2')
>>> 1
device_info.get_devices()
>>> ['device1', 'device2', 'device2']

1 commentaires

Merci d'avoir aidé, mais votre solution ne fonctionne que pour le périphérique 1 ... y a-t-il un moyen de réécrire le code?