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...
Updated 2 days ago