Set Shape Fill Color based on GeoJSON Property

I am creating a scattermapbox chart that plots some building locations on open-street-map tiles. I now want to add a GeoJSON set of shapes to this map and it works easily when the GeoJSON file contains a single shape using the following code:

fig2 = go.Figure(go.Scattermapbox())
fig2.update_layout(mapbox=go.layout.Mapbox(
    layers=[{
        'sourcetype': 'geojson',
        'source': json,
        'below': "traces",
        'type': 'fill',
        'color': "red",
        'opacity': .6,
    }],
    accesstoken=mapbox_access_token,
    style='open-street-map',
    center_lat=29.95, center_lon=-90.08,
    zoom=12,
))
fig2.show()

But my GeoJSON file contains multiple shapes and I want the color to vary based on a GeoJSON property associated with each shape. I cannot figure out how to do that because all of the Plotly sample code does this for chloropleths, using the featureid input, but not for scattermapox. I realize that one way to do this might be to manually split the GeoJSON into multiple pieces so that each layer could refer to a distinct GeoJSON and set a distinct color, but that will not work in my case because my GeoJSON has over 100 separate shapes, some with the same property that I want to use for the colors. I need an ability to read in a GeoJSON file with any number of shapes and then assign the color based on one of the GeoJSON properties.