Simplifying if else statements in Python code snippet
Recursion here is going to be your friend:

def recurse_json(property, variant):
    # This is our exit condition
    if isinstance(property, dict):
        json_key_getter(property, variant)
    else:
        # Otherwise, WE NEED TO GO DEEPER!
        for item in property:
            recurse_json(item, variant)


Now all you have to do is call this function in your for loop:

# Use `isinstance` to check for types as it takes inheritance into account.
if isinstance(variant_list, dict):
    style_color_if(variant_list[style_colors_main], variant_list)
else:
    for variant in variant_list:
        try:
            recurse_json(variant[style_colors_main], variant)
        except KeyError:
            print('Property had no "{}" property'.format(style_color_main))


I had to put in the try-except blocks because in your example the first element of the list did not have the productStyleColors property (which is what I assume is in style_color_main). 

The use of isinstance isn't ideal because we would typically like to use try-excepts blocks. However, because I don't know if your other functions throw any exceptions, I chose to use (as the link says) the 'less-bad option'.