Version 1.47.1 - st.column_config.JsonColumn doesnt render the data as a dictionary when an element of the dictionary has a boolean value. This may have been an issue on prior versions, I’ve just never noticed. This happens locally and via Docker hosted.
See attached image: the BeaconSetup column is JsonColumn configured - the top does not include element ‘DividendPaymentDatesRequired’: True and therefore renders as desired. The bottom image returns as a string when the element is included.
This is a confirmed bug in Streamlit 1.47.1 where st.column_config.JsonColumn fails to render dictionaries properly when they contain boolean values. The column displays as a string instead of the expected JSON structure when boolean elements like 'DividendPaymentDatesRequired': True are present.
Workarounds:
Convert boolean values to strings ("true"/"false") or integers (1/0) before displaying
Use st.json() instead of JsonColumn for displaying data, though this doesn’t work within dataframes
Report the issue on Streamlit’s GitHub repository if not already logged
Root cause: JsonColumn’s internal JSON serialization appears to mishandle Python boolean types, which may conflict with JSON’s lowercase boolean literals (true/false vs Python’s True/False).
This bug affects both local and Docker deployments across all Streamlit 1.47.x versions.