Je charge des données JSON dans Ma base de données, mais je reçois une erreur - TypeError - the JSON object must be str, not 'list'

from django.shortcuts import render

# Create your views here.

import json
from .models import Movie

def detail(request):

    with open('movie_data.json', encoding='utf-8') as data_file:
        json_data = json.loads(data_file.read())
        print(type(json_data))

    json_dict = json.loads(json_data)
    for movie_data in json_dict:
        movie = Movie.create(**movie_data)
        # movie and genres created

Fichier Json - movie_data.json

[
  {
    "99popularity": 83.0,
    "director": "Victor Fleming",
    "genre": [
      "Adventure",
      " Family",
      " Fantasy",
      " Musical"
    ],
    "imdb_score": 8.3,
    "name": "The Wizard of Oz"
  },
  {
    "99popularity": 88.0,
    "director": "George Lucas",
    "genre": [
      "Action",
      " Adventure",
      " Fantasy",
      " Sci-Fi"
    ],
    "imdb_score": 8.8,
    "name": "Star Wars"
  },
]

Je pense que le json devrait être converti en dictionnaire. Comment puis je faire ça. Je ne sais pas quel est le problème. Je lis le fichier json. Ce devrait être un fichier de chaîne?

0
Huzaif Sayyed 13 mars 2019 à 18:29

2 réponses

Meilleure réponse

Vous n'avez pas besoin d'appeler json.loads() deux fois. Supprimez le deuxième appel.

4
John Gordon 13 mars 2019 à 15:33

Comme indiqué ci-dessus, pas besoin de json.loads() deux fois. Et lorsque vous l'utilisez sur json_data = json.loads(data_file.read()), il est structuré comme une liste de dictionnaires.

1
chitown88 13 mars 2019 à 15:43