объект JSON должен быть str, а не 'list' - TypeError - PullRequest
0 голосов
/ 13 марта 2019

Я загружаю данные JSON в Мою базу данных, но выдает ошибку - 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

Файл 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"
  },
]

Я думаю, что JSON должен бытьпреобразован в словарь.Как я могу это сделать.Я не знаю в чем проблема.Я читаю файл JSON.Это должен быть строковый файл?

Ответы [ 2 ]

4 голосов
/ 13 марта 2019

Вам не нужно звонить json.loads() дважды.Удалить второй звонок.

1 голос
/ 13 марта 2019

Как указано выше, нет необходимости в json.loads() дважды. И когда вы используете его на json_data = json.loads(data_file.read()), он структурируется как список словарей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...