0
votes

Erreur Python et Json lors de l'extraction du fichier JSON

Est-ce que quelqu'un sait pourquoi ce code Python / JSON n'imprime pas et ne me donne cette erreur à l'interprète? J'ai regardé le script JSON et je ne peux pas taper quoi que ce soit qui semble avoir tort. Mon raisonnement inital derrière tout cela était de créer le même fichier JSON et YAML et à extraire / imprimer les données de Python.

import json
import yaml

with open("C:/Users/<REMOVED>/Desktop/test/cars.json", "r") as json_file:
    python_dict = json.load(json_file)
    json_indent = json.dumps(python_dict, indent=4)
    print(json_indent)


1 commentaires

Vous feriez bien d'utiliser un meilleur éditeur et de formater votre JSON plus clairement. Dès le début, il y a une erreur: {"voitures": ["Ford": [ - "voitures" est une clé dans le dictionnaire avec un tableau ( [] ) En tant que valeur, mais vous avez ensuite une autre paire de clé / valeur («Ford» et un tableau) comme si c'est un autre dictionnaire.


5 Réponses :


0
votes

Votre fichier JSON est malformé. La version suivante au moins est une JSON valide:

{
    "cars": [{
        "ford": [{
            "model": "focus",
            "price": 12000,
            "transmission": "manual",
            "colours": ["red", "blue", "green", "white"]
        }],
        "kia": [{
            "model": "shuma",
            "price": 8000,
            "transmission": "manual",
            "colours": ["red", "blue", "green", "white"]
        }],
        "honda": [{
            "model": "civic",
            "price": 15000,
            "transmission": "automatic",
            "colours": ["red", "blue", "green", "white"]
        }]
    }]
}


0 commentaires

0
votes

Votre JSON est en effet incorrect. Les voitures de haut niveau doivent être un dictionnaire et non une liste avec les touches Ford , kia , etc., etc., vous avez manqué des virgules après les différentes listes des marques de la voiture . Je suppose qu'une marque de voiture contiendra une liste de modèles, de sorte que l'élément de liste est correct. xxx


0 commentaires

0
votes

Vous devez ajouter des accolades frisées pour chaque voiture:

{
    "cars": [{
        "ford": [{
            "model": "focus",
            "price": 12000,
            "transmission": "manual",
            "colours": ["red", "blue", "green", "white"]
        }],
        "kia": [{
            "model": "shuma",
            "price": 8000,
            "transmission": "manual",
            "colours": ["red", "blue", "green", "white"]
        }],
        "honda": [{
            "model": "civic",
            "price": 15000,
            "transmission": "automatic",
            "colours": ["red", "blue", "green", "white"]
        }]
    }]
}


0 commentaires

0
votes

Votre fichier JSON n'est pas correct. strong> La liste des voitures de votre cas est représentée comme clé: valeur dans la structure de données de la liste, une liste ne peut contenir que la valeur. Donc, enveloppez votre objet de chaque voiture dans Objet JSON {} strud>.

Fichier JSON correctement formaté: p>

{  
    "cars": [
        {
            "ford": [
            {"model": "focus", 
            "price": 12000, 
            "transmission": "manual", 
            "colours": ["red", "blue", "green", "white"]}
            ]
        }
        {
            "kia": [
            {
            "model": "shuma", 
            "price": 8000, 
            "transmission": "manual", 
            "colours": ["red", "blue", "green", "white"]}
            ]
        }
        {
            "honda": [
            {
            "model": "civic", 
            "price": 15000, 
            "transmission": "automatic", 
            "colours": ["red", "blue", "green", "white"]}
            ] 
        }
     ] 
}


0 commentaires

0
votes

Votre mise en forme JSON est incorrecte. Après des voitures, vous essayiez d'utiliser une liste au lieu d'un dictionnaire. Voici la version correcte

{  "cars": {
        "ford": [
        {"model": "focus", 
        "price": 12000, 
        "transmission": "manual", 
        "colours": ["red", "blue", "green", "white"]}
        ],
        "kia": [
        {
        "model": "shuma", 
        "price": 8000, 
        "transmission": "manual", 
        "colours": ["red", "blue", "green", "white"]}
        ],
        "honda": [
        {
        "model": "civic", 
        "price": 15000, 
        "transmission": "automatic", 
        "colours": ["red", "blue", "green", "white"]}
        ] 
     } 

     }


0 commentaires