skip to Main Content

I have a json file which looks like

{
        "0": {
            "id": 1700388,
            "title": "Disconnect: The Wedding Planner",
            "year": 2023,
            "imdb_id": "tt24640474",
            "tmdb_id": 1063242,
            "tmdb_type": "movie",
            "type": "movie"
        },
        "1": {
            "id": 1631017,
            "title": "The Pale Blue Eye",
            "year": 2022,
            "imdb_id": "tt14138650",
            "tmdb_id": 800815,
            "tmdb_type": "movie",
            "type": "movie"
        },
        "2": {
            "id": 1597915,
            "title": "The Man from Toronto",
            "year": 2022,
            "imdb_id": "tt11671006",
            "tmdb_id": 667739,
            "tmdb_type": "movie",
            "type": "movie"
        },

I am trying to read this and extract the "tmbd_id" to store as a variable. I then intend to inject this into a url for an api get request.

The next step is to add the response parameters to the json file. Then adding it all into a loop. There are 1000 entries.

I have been trying to use other answers but I suspect the nature of my json is causing the issue with the integer name causing issues. It has been giving me this error

for i in data[‘0’]:
TypeError: list indices must be integers or slices, not str

2

Answers


  1. You can use json.loads to read the file’s content and then iterate to find those id’s:

    import json
    
    tmdb_ids = []
    
    with open('test.json', 'r') as json_fp:
        imdb_info = json.load(json_fp)[0]
    
    for dict_index, inner_dict in imdb_info.items():
        tmdb_ids.append(inner_dict['tmdb_id'])
    
    print(tmdb_ids)
    

    Result:

    [1063242, 800815, 667739]
    

    You can make it more sophisticated if you need a specific tmdb_id from a specific "movie" by adding some if statements to the for loop, choosing movies you want.


    Edit

    I’ve noticed this is an array of dictionaries, thus we can iterate over each "movie chunk" and extract the tmdb_id from each one:

    
    with open('test.json', 'r') as json_fp:
        imdb_info = json.load(json_fp)
    
    tmdb_ids = [movie_info['tmdb_id'] for movies_chunk in imdb_info for movie_index, movie_info in movies_chunk.items()]
    
    Login or Signup to reply.
  2. for reading json:

    import json
    with open("file.json","r") as file:
        text = json.load(file)
    

    for tmbd_id:

    for i in text:
        print(text[i]["tmdb_id"])
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search