Guides

How to Parse Exported JSON into CSV

If you need to process metadata exported from Visual Layer, this code helps convert JSON files into CSV format.

Read Visual Layer exported json and parse it into a list of videos, video frames, their timestamp, and their category


import json  
import pandas as pd  
import re

## Load JSON file

with open("metadata 8.json", "r") as f:  
    data = json.load(f)

## Prepare list for DataFrame

records = \[]

## Iterate over media items

for item in data.get("media_items", \[]):  
    video_name = None  
    frame_timestamp = None  
    categories = \[]  
    file_name = item.get("file_name", "")

	for metadata in item.get("metadata_items", []):
	    if metadata["type"] == "video_info":
 	       video_name = metadata["properties"].get("video_name")
 	       frame_timestamp = metadata["properties"].get("frame_timestamp")
 	   elif metadata["type"] == "image_label":
    	    categories.append(metadata["properties"].get("category_name"))

	# Extract frame number from file name
	match = re.search(r'output_(\d+).jpg', file_name)
	frame_number = int(match.group(1)) if match else None

	# Append record with categories as a list
	records.append({
	    "video_name": video_name,
	    "file_name": file_name,
	    "frame_number": frame_number,
	    "time_in_video": frame_timestamp,
	    "categories": categories
	})

## Convert to DataFrame

df = pd.DataFrame(records)  
print(df.tail())

Output:


                                       video_name          file_name  \

51 7370082532203988000_7453155857585442070_2024-1... output_000001.jpg
52 7370082532203988000_7453516762223496470_2024-1... output_000001.jpg
53 7370082532203988000_7457153883383614742_2025-0... output_000002.jpg
54 7370082532203988000_7460204779604692246_2025-0... output_000002.jpg
55 7370082532203988000_7462069977454071062_2025-0... output_000032.jpg

frame_number  time_in_video  \

51 1 0.000000
52 1 0.000000
53 2 8.351707
54 2 8.333333
55 32 84.440002

                                       categories  

51 [blanket, person, man, mountain, peak, ridge, ...
52 [blanket, foot, hill, person, mountain, ski sl...
53 [blue, paddle, calm, clear, float, person, lag...
54 [blanket, person, man, mountain, stone, skier,...
55 [blanket, building, mountain, snow, snowy, tra...